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()")
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现