基本的概念语法就不写了,直接上代码和分析
demo1:
package add var Name string = "hello world" var Age int = 10
package main import ( "DEMO/test/day2/example2/add" "fmt" ) func main() { fmt.Println("Name:", add.Name) fmt.Println("Age:", add.Age) }
分析:
1.调包,需要写GOPATH目录下src目录之后的路径
比如我电脑的GOPATH:D:\PROJECT\GO_PROJECT
我的add包目录:D:\PROJECT\GO_PROJECT\src\DEMO\test\day2\example2\add
2.一个文件夹里面只能有一个包,最好同名
3.main函数必须在main包中
4.private变量小写首字母,public变量大写首字母即可
demo2:
package add var Name string = "test" var Age int = 666 func init() { Name = "Hello World!" Age = 10 }
package main import ( a "DEMO/test/day2/example3/add" "fmt" ) func main() { fmt.Println("Name:", a.Name) fmt.Println("Age:", a.Age) }
分析:
1.导入的包可以取别名,比如我这里的a
2.init函数在初始赋值后执行,所以这里应该输出的是helloworld和10
demo3:
package main import ( "fmt" ) func modify(a int) { a = 10 return } func modity(a *int) { *a = 10 return } func main() { a := 5 b := make(chan int, 1) fmt.Println("a =", a) fmt.Println("b =", b) modify(a) fmt.Println("a =", a) modity(&a) fmt.Println("a =", a) }
分析:
1.依次输出:a = 5,b = 0xc0000160e0,a = 5,a = 10
2.理解修改地址和修改引用的区别
demo4:
package main import "fmt" func swap(a *int, b *int) { temp := *a *a = *b *b = temp return } func go_swap(a int, b int) (int, int) { return b, a } func main() { three := 3 four := 4 swap(&three, &four) fmt.Println("---Swap---") fmt.Println("three =", three) fmt.Println("four =", four) three, four = go_swap(three, four) fmt.Println("---Swap---") fmt.Println("three =", three) fmt.Println("four =", four) }
分析:
1.两种交换都是正确的
2.理解传统c语言交换函数以及多返回值形式的交换函数
demo5:
package main import ( "fmt" "math/rand" "time" ) func init() { rand.Seed(time.Now().UnixNano()) } func main() { fmt.Println("---Generate Random Number---") fmt.Println("--Int---") for i := 0; i < 3; i++ { a := rand.Int() fmt.Println(a) } fmt.Println("---Int(100)---") for i := 0; i < 3; i++ { a := rand.Intn(100) fmt.Println(a) } fmt.Println("---Float32---") for i := 0; i < 3; i++ { a := rand.Float32() fmt.Println(a) } }
分析:
1.简单的随机数生产程序,学会rand和time的基本使用
2.根据当前的精确时间给rand一个种子,保证随机的不确定性
demo6:
package main import "fmt" func reverse1(str string) string { var result string strLen := len(str) for i := 0; i < strLen; i++ { result += fmt.Sprintf("%c", str[strLen-i-1]) } return result } func reverse2(str string) string { var result []byte tmp := []byte(str) lenth := len(str) for i := 0; i < lenth; i++ { result = append(result, tmp[lenth-i-1]) } return string(result) } func main() { str := "hello world!" result := reverse2(str) fmt.Printf("str:%s\nresult:%s\n", str, result) }
分析:
1.反转字符串的两种形式
demo7:
package main import ( "fmt" "math" ) func mai