门户建设网站多少钱,酒店网站如何做,网站开发有什么技术要求,seo搜索引擎优化期末及答案目录 概述语法for常量与变量数组切片 slice切片问题问题1问题2 Make 和 New结构体和指针结构体标签 结束 概述
从 java 转来学 go #xff0c;在此记录#xff0c;方便以后翻阅。
语法
for
package mainimport fmtfunc main() {for i : 0; i 3; i {fmt.… 目录 概述语法for常量与变量数组切片 slice切片问题问题1问题2 Make 和 New结构体和指针结构体标签 结束 概述
从 java 转来学 go 在此记录方便以后翻阅。
语法
for
package mainimport fmtfunc main() {for i : 0; i 3; i {fmt.Println(i)}fullString : helloworldfor i, i2 : range fullString {fmt.Println(i, string(i2))}
}for-range 遍历数组切片字符串Map 等
常量与变量
变量定义
变量 var 语句用于声明一个变量列表例子var c,python 变量的初始化 变量声明可以包含初始值每个变量对应一个如果初始化值已存在则可以省略类型变量会从初始值中获得类型var i,j int 1,2 短变量声明 在函数中简洁赋值语句:可在类型明确的地方代替 var 声明函数外的每个语句都必须以关键字开始(var,func等)因此:结构不能在函数外使用
数组
相同类型且长度固定连续内存片段以编号访问每个元素定义方法 var identifier [len] type 示例 myArray :[3]int{1,2,3}
切片 slice
和数组类似的数据结构
切片是对数组一个连续片段的引用数组定义中不指定长度即为切片 var identifier [] type 切片在未初始化之前默认为nil长度为0
package mainimport fmtfunc main() {myArray : [5]int{1, 2, 3, 4, 5}mySlice : myArray[1:3]fmt.Printf(mySlice %v\n, mySlice)fullSlice : myArray[:]fmt.Printf(fullSlice %v\n, fullSlice)var mySlice2 []intmySlice2 append(mySlice2, 1)mySlice2 append(mySlice2, 2)mySlice2 append(mySlice2, 3)fmt.Println(mySlice2)
}切片问题
问题1
package mainimport fmtfunc main() {var a []intb : []int{1, 2, 3}c : aa append(b, 1)fmt.Println(c)fmt.Println(a)fmt.Println(b)
}append(b,1) 时会重新分配地址导致a与c并不相等。
问题2
package mainimport fmtfunc main() {mySlice : []int{10, 20, 30, 40, 50}for _, i2 : range mySlice {i2 * 2}fmt.Println(mySlice)for i, _ : range mySlice {mySlice[i] * 2}fmt.Println(mySlice)
}注意go 语言都是值传递 Make 和 New
New 返回指针地址Make 返回第一个元素可预设内存空间避免未来的内存拷贝 结构体和指针
通过 type … struct 关键字自定义结构体Go 语言支持指针但不支持指针运算 指针变量的值为内存地址示贝佳的指针为 nil
package mainimport fmttype IF interface {// 接口里面只能定义行为getName() string
}type Human struct {// 结构体里面只能包含属性firstName, lastName string
}func main() {h : new(Human)fmt.Println(h)fmt.Println(h)fmt.Println(*h)
}结构体标签 结构体中的字段除了有名字和类型外还可以有一个可选的标签(tag) package mainimport reflecttype MyType struct {Name string json:name
}func main() {mt : MyType{Name: test}mytype : reflect.TypeOf(mt)name : mytype.Field(0)tag : name.Tag.Get(json)print(tag)
}结束
goLand 语法后续会继续补充如有疑问欢迎评论区留言。