从 java 转来学 go ,在此记录,方便以后翻阅。
package main
import "fmt"
func main() {
for i := 0; i < 3; i++ {
fmt.Println(i)
}
fullString := "helloworld"
for i, i2 := range fullString {
fmt.Println(i, string(i2))
}
}
for-range
遍历数组,切片,字符串,Map 等
变量定义
和数组类似的数据结构
package main
import "fmt"
func 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 []int
mySlice2 = append(mySlice2, 1)
mySlice2 = append(mySlice2, 2)
mySlice2 = append(mySlice2, 3)
fmt.Println(mySlice2)
}
package main
import "fmt"
func main() {
var a []int
b := []int{1, 2, 3}
c := a
a = append(b, 1)
fmt.Println(c)
fmt.Println(a)
fmt.Println(b)
}
append(b,1) 时,会重新分配地址,导致a与c并不相等。
package main
import "fmt"
func 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 语言都是值传递
package main
import "fmt"
type 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 main
import "reflect"
type 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 语法,后续会继续补充,如有疑问,欢迎评论区留言。