go学习笔记day1

 

目录

一、hello, world

二、变量

三、常量

四、循环

五、if/else 分支

六、switch

七、数组

八、切片

九、Map关联数组

十、Range 遍历

十一、函数

十二、多返回值

十三、可变参数的函数

十四、闭包


https://books.studygolang.com/gobyexample/

 

一、hello, world

package main

import "fmt"

func main() {
	fmt.Println("hello, world")
}

 

二、变量

package main

import "fmt"

func main() {
	var a string = "initial"
	fmt.Println(a)

	var b, c int = 3, 4
	fmt.Println(b, c)

	var d = true
	fmt.Println(d)

	var e bool = false
	fmt.Println(e)

	f := "short"
	fmt.Println(f)
}

 

三、常量

package main

import (
	"fmt"
	"math"
)

const c string = "constant"

func main() {
	fmt.Println(c)
	const a = 500000
	fmt.Println(a)
	// a = 3000
	fmt.Println(a)

	const b = 3e10 / a
	fmt.Println(b)

	fmt.Println(int64(b))
	fmt.Println(math.Sin(b))
}

 

四、循环

package main

import "fmt"

func main() {
	i := 1
	for i <= 3 {
		fmt.Println(i)
		i = i + 1
	}

	for i := 1; i < 8; i++ {
		if i == 4 {
			continue
		}
		fmt.Print(i)
	}

	fmt.Println()
	for {
		fmt.Println("hello")
		break
	}
}

五、if/else 分支

package main

import "fmt"

func main() {
	if i := true; i {
		fmt.Println(i)
	} else {
		fmt.Println(false)
	}

	if a := 3; a == 0 {
		fmt.Println("a is big data")
	} else {
		fmt.Println("a is min data")
	}

	if b := 5; b%3 == 0 {
		fmt.Println(" b is a integer ")
	} else if b < 10 {
		fmt.Println(" b is min data ")
	} else {
		fmt.Println(" b is big data ")
	}
}

六、switch

package main

import (
	"fmt"
	"time"
)

func main() {
	a := 2
	fmt.Println(" write ", a, " as ")
	switch a {
	case 1:
		fmt.Println("a is 1")
	case 2:
		fmt.Println(" a is 2 ")
	default:
		fmt.Println("a is default ")
	}

	switch time.Now().Weekday() {
	case time.Saturday, time.Sunday:
		fmt.Println(" time is sunday ")
	case time.Friday:
		fmt.Println(" time is friday ")
	}
}

七、数组

package main

import "fmt"

func main() {
	var a [5]int
	fmt.Println(a)

	a[4] = 100
	fmt.Println(a)

	fmt.Println(len(a))

	b := [6]int{1, 2, 3, 4, 5}
	fmt.Println(b)

	var arr [2][3]int
	for i := 1; i <= 2; i++ {
		for j := 1; j <= 3; j++ {
			arr[i-1][j-1] = i * j
		}
	}
	fmt.Println(arr)
}

八、切片

package main

import "fmt"

func main() {
	s := make([]string, 3)
	fmt.Println("emp", s)

	s[0] = "a"
	s[1] = "b"
	s[2] = "c"
	fmt.Println(s)
	fmt.Println(s[2])
	/*
		goroutine 1 [running]:
		main.main()
				/Users/fengzhengshu/Code/gogogo/project1/slice.go:14 +0x279
		exit status 2
	*/
	//fmt.Println(s[3])
	fmt.Println(len(s))

	/*
		# command-line-arguments
		./slice.go:23:8: append(s, "d") evaluated but not used
	*/
	// append(s, "d")
	fmt.Println(s)
	s = append(s, "e")
	fmt.Println(s)

	a := make([]string, len(s))
	fmt.Println(a)
	copy(a, s)
	fmt.Println(a)

	b := s[2:3]
	fmt.Println(b)

	/*
		# command-line-arguments
		./slice.go:40:4: no new variables on left side of :=
	*/
	// b := s[2:5]

	c := s[2:5]
	fmt.Println(c)

	d := []string{"1", "2", "3"}
	fmt.Println(d)

	e := [][]int{{1, 2}, {1, 2}}
	fmt.Println(e)

	f := make([][]int, 3)
	for i := 0; i < 3; i++ {
		inlen := i + 1
		/*
			fengzhengshu:project1 fengzhengshu$ go run slice.go
			# command-line-arguments
			./slice.go:58:4: non-name f[i] on left side of :=
		*/
		// f[i] := make([]int, inlen)
		f[i] = make([]int, inlen)
		for j := 0; j < inlen; j++ {
			f[i][j] = i + j
			fmt.Print(f[i][j])
		}
		fmt.Println()
	}
}

 

九、Map关联数组

package main

import "fmt"

func main() {
	a := make(map[string]int)
	fmt.Println(a)

	a["a"] = 1
	a["b"] = 2
	fmt.Println(a)

	/*
		# command-line-arguments
		./maps.go:13:2: undefined: x
		./maps.go:14:14: undefined: x
	*/
	// x = a["a"]
	x := a["a"]
	fmt.Println(x)
	fmt.Println(a["b"])

	fmt.Println(len(a))

	delete(a, "b")
	fmt.Println(a)

	y := a["b"]
	fmt.Println("b", y)

	_, yy := a["b"]
	fmt.Println("_,b", yy)

	_, yyy := a["a"]
	fmt.Println("_,a", yyy)

	map2 := map[string]int{"spu": 1, "sku": 2}
	fmt.Println(map2)
}

十、Range 遍历

package main

import "fmt"

func main() {
	arr := []int{1, 2, 3}
	sum := 0
	for num := range arr {

		sum += num
	}
	fmt.Println("sum", sum) // sum 3

	sum = 0
	for _, num := range arr {
		sum += num
	}
	fmt.Println("sum", sum) // sum 6

	for i, num := range arr {
		fmt.Println(" i = ", i, " num = ", num)
		if num == 3 {
			fmt.Println("i = ", i)
		}
	}

	/*
		# command-line-arguments
		./range.go:27:17: too many variables in range
	*/
	// for a, b, c := range arr {
	// 	fmt.Println(" a = ", a, " b = ", b, " c = ", c)
	// }

	kv := map[string]string{"a": "apple", "b": "banana"}
	fmt.Println(kv)
	for k, v := range kv {
		fmt.Printf(" %s -> %s ", k, v)
	}

	// range 在字符串中迭代 unicode 编码
	for x, y := range "go" {
		fmt.Println(x, y) // 1 111
	}
}

十一、函数

package main

import "fmt"

func main() {
	result := plus(1, 2)
	fmt.Println(" result = ", result)
}

/*
# command-line-arguments
./functions.go:6:16: plus(1, 2) used as value
./functions.go:11:2: too many arguments to return
        have (int)
        want ()
*/
// func plus(a int, b int) {
func plus(a int, b int) int {
	return a + b
}

 

十二、多返回值

package main

import "fmt"

/*
# command-line-arguments
./multi-return-value.go:6:2: too many arguments to return
        have (number, number)
        want ()
./multi-return-value.go:10:16: not enough arguments in call to values
        have ()
        want (int, int)
./multi-return-value.go:10:16: values() used as value
*/
//func values(int, int) {
func values() (int, int) {
	return 2, 5
}

func main() {
	a, b := values()
	fmt.Println(" a = ", a, " b = ", b)

	/*
		# command-line-arguments
		./multi-return-value.go:24:4: assignment mismatch: 1 variable but values returns 2 values
	*/
	//c := values()
	//fmt.Println(" c = ", c)

	_, c := values()
	/*
		# command-line-arguments
		./multi-return-value.go:32:13: cannot use _ as value
	*/
	//fmt.Println(" _ = ", _, " c = ", c)
	fmt.Println(" c = ", c)
}

十三、可变参数的函数

package main

import "fmt"

func scale(nums ...int) int {
	result := 0
	for _, num := range nums {
		result += num
	}
	fmt.Println(" result = ", result)
	return result
}

func main() {
	scale(1, 2, 3)
	scale(4, 5, 6, 7)

	nums := []int{1, 2, 3, 5, 6}
	/*
		# command-line-arguments
		./variadic-parameter.go:19:7: cannot use nums (type []int) as type int in argument to scale
	*/
	//scale(nums)
	scale(nums...)
}

十四、闭包

package main

import "fmt"

func intSeq() func() int {
	i := 0
	return func() int {
		i += 1
		return i
	}
}

func main() {
	nextInt := intSeq()
	fmt.Println(nextInt)
	fmt.Println(nextInt())
	fmt.Println(nextInt())
	fmt.Println(nextInt())
	fmt.Println(nextInt())
	fmt.Println(nextInt())
	fmt.Println(nextInt())
	nextInt = intSeq()
	fmt.Println(nextInt())
}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值