重学go语言(day2)

go语言基础语法

	1. 学习一门语言需要学习它的基础语法, go语言变量声明
  写法一:
  var a int = 1 或者 var a = 1 可以包内全局声明
  go的写法熟悉javascript的会想到 var a = 1 这种变量声明和赋值
  int 代表a的数据类型 如果懂得typescript的也能大体知道是给当前参数类型
  
  写法二:
  a := 1 省略var和类型
  重新赋值 a = 3
  这是一种简写的形式,像go这种静态语言可以通过值来推导类型,跟typescript类型推导一样
  
  常量写法与javascript相同
  const PI = 3.1415
	
  枚举
  const (
  	SUCCESS = iota (iota代表行累加器 默认值为0后面内容原有值基础上加1 如果SUCCESS给予其它类型布尔,数字,字符串,Fail未赋值取上级的结果)
  	Fail
  )
 2. 数据类型
	整数类型:u代表有符号整数 数字代表数据精度位
		int8
		int16
		int32
		int64
		uint8
		uint16
		uint32
		uint64
	浮点数:
		float32
		float64
	其它
		字节类型byte,对数据字节或者string类型进行转换, 可以看到 type byte = uint8 (类型别名熟悉ts的应该也会有感觉)
		rune 一般用来对中文文字进行操作处理
3. 类型转换
	var a = int(float32(1.3)) 静态语言只支持强制类型转换,但要注意精度丢失,所以可以使用内置strconv包进行类型转换
4.逻辑判断 
	if 判断可以不需要()但花括号不允许换行
	a := true
	b := false
	if a && b {
		fmt.Println("true")
	} else {
		fmt.Println("false")
	}

	if a || b {
		fmt.Println("true")
	} else {
		fmt.Println("false")
	}

	a = false
	b = true
	if !(a && b) {
		fmt.Println("true")
	} else {
		fmt.Println("false")
	}
	swich 不需要像其他语言那样加入break
	const (
		SUCCESS = iota + 1
		FAIL
		APPROVAL
	)
	status := 1
	switch status {
	case SUCCESS:
		fmt.Println("success")
	case FAIL:
		fmt.Println("fail")
	case APPROVAL:
		fmt.Println("approval")
	default:
		fmt.Println("no found")
	}
for循环在数组、map、携程都用到没有其它语言还有while
 	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
	这种写法代替while, 在之后学到的携程种会一直接触
	for {
		break
	}
5. 函数
函数式编程现在在很多语言中流行,以及有多个返回值,使用很多包时都会有error nil 的判断
func add(fn func(a, b int) (int, int)) (int, string) {
	t1, t2 := fn(1, 2)
	return t1, strconv.Itoa(t2)
}

func main() {
	t1, t2 := add(func(a, b int) (int, int) {
		return a + b, b
	})
	fmt.Println(t1, t2)
}

func main() {
	i, err := strconv.Atoi("1")
	if err != nil {
		fmt.Println("error")
	} else {
		fmt.Println("i", i)
	}
}
6.指针 对于计算机专业的人都会有了解,如果是学前端的就不会太了解,刚毕业那会面试问到过go是指传递还是引用传递
以下是两个代码片段 golang 是值传递,要么传字面值或者传地址值(看上去是类似其它语言引用传递)
指针类型存的是变量内存地址,通过内存地址去改变变量的值
片段一: 

func swap(a, b int) {
	a, b = b, a
}

func main() {
	a := 1
	b := 2
	swap(a, b)
	fmt.Println(a, b) // 1 2
}

片段二:

func swap(a, b *int) {
	*a, *b = *b, *a
}

func main() {
	a := 1
	b := 2
	swap(&a, &b)
	fmt.Println(a, b) // 2 1
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值