赞
踩
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
运行方式1:
go run main.go
运行方式2:
go build
.\hello_go.exe
运行方式3:goland右键运行
使用加号可以对字符串进行拼接。
package main
import "fmt"
func main() {
fmt.Println("hello world" + "你好世界")
}
package main import "fmt" func main() { var a, b, c int a = 11 b = 22 c = 333 fmt.Println(a) fmt.Println(b) fmt.Println(c) }
上面的变量定义和初始化有更简单的方式,如下:
package main
import "fmt"
func main() {
a := 11
b := 22
c := 333
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}
使用%d可以在字符串中格式化输入整数类型,如下:
package main
import "fmt"
func main() {
a := 11
b := 22
c := 333
fmt.Printf("a=%d, b=%d, c=%d\n", a, b, c)
}
if语句主要有三种格式,如下:
package main import "fmt" func main() { a := 33 // 单分支 if a > 0 { fmt.Println(a) } // 双分支 if a < 0 { fmt.Println(a) } else { fmt.Println(a + a) } // 多分支 if a > 100 { fmt.Println(a) } else if a > 0 { fmt.Println(a + a) } else { fmt.Println(a + a + a) } }
累加求和:
package main
import "fmt"
func main() {
sum := 0
for i := 0; i < 101; i++ {
sum += i
}
fmt.Println(sum)
}
package main
import "fmt"
func main() {
for i := 1; i < 10; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%d * %d = %d\t", j, i, i*j)
}
fmt.Println()
}
}
package main
import "fmt"
func main() {
arr := []int{11, 22, 33}
for k, v := range arr {
fmt.Println(k, v)
}
}
package main
import "fmt"
func main() {
arr := "abc"
for k, v := range arr {
fmt.Println(k, v)
}
}
package main
import "fmt"
func main() {
arr := map[string]int{"one": 1, "two": 2, "three": 3}
for k, v := range arr {
fmt.Println(k, v)
}
}
package main import "fmt" func main() { c := make(chan int) go func() { c <- 33 c <- 333 c <- 333333 close(c) }() for v := range c { fmt.Println(v) } }
如果我们在遍历的时候,不想要key或者value,也可以用下划线替代,下划线叫做匿名变量。
package main
import "fmt"
func main() {
c := []int{1, 2, 3}
for _, v := range c {
fmt.Println(v)
}
}
go语言里面的switch语句每个case天生就是独立的,不需要加break。
package main func main() { s := "python" switch s { case "python": print("1") case "go": print("2") case "java": print("3") default: print("4") } }
这个是go语言的特点,很少在其他语言看见,我们来看例子:
package main
func main() {
s := "python"
switch s {
case "python", "go", "java":
print("1")
default:
print("4")
}
}
这个也是go语言的特点,我们来看例子:
package main
func main() {
s := 33
switch {
case s > 0 || s < 100:
print("1")
default:
print("4")
}
}
package main
func main() {
s := "abcde"
print(s[0])
}
package main
func main() {
s := "abcde"
print(s[0:3])
}
package main
import "unicode/utf8"
func main() {
s := "abcde"
print(utf8.RuneCountInString(s))
}
package main
func main() {
s := "abcde"
print(string(s[1]))
}
package main
import "fmt"
func main() {
s := "我 爱 你 中 国"
cs := []rune(s)
for _, ch := range cs {
fmt.Println(string(ch))
}
}
package main import ( "bytes" "fmt" ) func main() { var bf bytes.Buffer for i := 0; i < 10; i++ { fmt.Fprintf(&bf, "a%d ", i) } s := bf.String() fmt.Println(s) }
指针可以直接对内存地址进行操作。使用*表示指针,使用&取地址。
package main
import "fmt"
func main() {
a := 33
pa := &a
*pa = 333
fmt.Println(a)
fmt.Println(*pa)
}
package main import "fmt" func swap(a, b *int) { *a, *b = *b, *a } func main() { a, b := 33, 11 fmt.Println(a, b) swap(&a, &b) fmt.Println(a, b) }
package main import "fmt" func main() { // 声明 var arr [8]int // 赋值 for i := 0; i < 8; i++ { arr[i] = i * 33 } // 遍历 for i := 0; i < 8; i++ { fmt.Println(arr[i]) } }
package main import "fmt" type User struct { Name string Age int } func main() { zs := User{"zs", 20} ls := User{Name: "ls", Age: 20} fmt.Println(zs, ls) }
package main import "fmt" type User struct { Name string Age int } func printUser(u User) { fmt.Printf("姓名:%s 年龄:%d \n", u.Name, u.Age) } func main() { zs := User{"zs", 20} ls := User{Name: "ls", Age: 20} printUser(zs) printUser(ls) }
package main import "fmt" type User struct { Name string Age int } func printUser(u *User) { fmt.Printf("姓名:%s 年龄:%d \n", u.Name, u.Age) } func main() { zs := User{"zs", 20} ls := User{Name: "ls", Age: 20} printUser(&zs) printUser(&ls) }
切片在go语言里面非常常用,因为其有动态扩展的特性。
package main import "fmt" func main() { var arr []int // 增加 arr = append(arr, 11) arr = append(arr, 22) arr = append(arr, 33) // 删除 索引1 index := 1 arr = append(arr[:index], arr[index+1:]...) // 修改 arr[0] = 888 // 遍历 for _, v := range arr { fmt.Println(v) } }
package main import "fmt" func main() { var m = make(map[string]int) // 增加 m["a"] = 11 m["b"] = 12 m["c"] = 13 // 删除 delete(m, "a") // 修改 m["c"] = 888 // 遍历 for k, v := range m { fmt.Println(k, v) } }
package main
import "fmt"
func add(a, b int) int {
return a + b
}
func main() {
fmt.Println(add(1, 2))
}
package main import "fmt" func add(arr ...int) int { sum := 0 for i := 0; i < len(arr); i++ { sum += arr[i] } return sum } func main() { fmt.Println(add(1, 2)) fmt.Println(add(1, 2, 3, 4, 5)) }
package main
import "fmt"
func main() {
defer func() {
fmt.Println("这个是匿名函数")
}()
fmt.Println("xxx")
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。