V语言03基础映射

映射

mut m := map[string]int{} //串为键,整为值
m["one"] = 1
m["two"] = 2
println(m["one"]) // "1"
println(m["bad_key"]) // "0"
println("bad_key" in m) //用`in`来检查是否存在
m.delete("two")

映射的可为串/整/浮/符文/空针.可简化为:

numbers := map{
	"one": 1
	"two": 2
}
println(numbers)

找不着,就返回零值.

sm := map{
	"abc": "xyz"
}
val := sm["bad_key"]
println(val) // ""
intm := map{
	1: 1234
	2: 5678
}
s := intm[3]
println(s) // 0

万一映射的值就是0值,怎么办,该如何区分?

mm := map[string]int{}
val := mm["bad_key"] or { panic("找不到") }
//用or块来处理未找到.
//数组同样
arr := [1, 2, 3]
large_index := 999
val := arr[large_index] or { panic("出界") }

导入模块

import os

fn main() {
	//从标入读文本
	name := os.input("输入名字:")
	println("你好, $name!")
}

可用os的公开定义(函数/常值/...).如输入.调用外部函数时,要指定模块.主要为了可读性/帮助理解(哪个模块.函数).不允许循环导入.

可选导入

import os { input }

fn main() {
	//从标入读文本
	name := input("输入名字:")
	println("你好, $name!")
}

常数不能这样,必须加(模块)前缀.多个:

import os { input, user_os }

name := input("输入名字:")
println("你好, $name!")
os := user_os()
println("你操系是:${os}.")

别名导入模块,只能别名模块:

import crypto.sha256
import mymod.sha256 as mysha256

fn main() {
	v_hash := mysha256.sum("hi".bytes()).hex()
	my_hash := mysha256.sum("hi".bytes()).hex()
	assert my_hash == v_hash
}

你不能别名函数/类型,但你可再声明别名.

import time
import math

type MyTime = time.Time

fn (mut t MyTime) century() int {
	return int(1.0 + math.trunc(f64(t.year) * 0.009999794661191))
}

fn main() {
	mut my_time := MyTime{
		year: 2020
		month: 12
		day: 25
	}
	println(time.new_time(my_time).utc_string())
	println("世纪: $my_time.century()")
}
posted @   zjh6  阅读(14)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示