加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Go语言学习(一):初识Golang

发布时间:2020-12-16 18:53:56 所属栏目:大数据 来源:网络整理
导读:前言 最近一段时间接触了下go语言,很有兴趣,花时间研究了下,觉得可以学一学,然后就不多说了。Ubuntu下配置Go环境的可以参考下博文《Ubuntu 配置 Go 语言开发环境(Sublime Text+GoSublime)》,亲测可用。 初识Golang 关于关键字、类型和变量: 1,Go在

前言

最近一段时间接触了下go语言,很有兴趣,花时间研究了下,觉得可以学一学,然后就不多说了。Ubuntu下配置Go环境的可以参考下博文《Ubuntu 配置 Go 语言开发环境(Sublime Text+GoSublime)》,亲测可用。

初识Golang


关于关键字、类型和变量:

1,Go在语法上类C,如果希望将两个(或更多)语句放在一行书写,必须用分号(“;”)隔开。一般情况下,不需要分号。
<span style="font-size:18px;">eg. 
	for init; condition; post {
		...
	}</span>
2,定义一个变量,默认赋值为其类型null值。引入“:=”符号在一步内完成声明与赋值(只用于函数内,此情况下,变量类型由赋值内容自动推演

3,特殊变量_(下划线),任何赋给它的值将被丢弃。

4,GO编译器对声明却未使用的变量会报错。

5, int/uint视硬件架构定义为32位或64位,另外有一套完整的类型:int8,int16,int32,int64 /byte(uint8别名),uint8,uint16,uint32,uint64 / float32,float64。各类型完全独立,不能混合赋值,除非强转。

6,常量是无类型的。iota关键字表示0,重复使用时,每次使用加1。Go使用其演绎枚举类型。
<span style="font-size:18px;">eg. 
	const (
		Monday = iota
		Tuesday
		Wednesday
		...
		Sunday
		numberOfDays   // 该值为包内私有,不可为其他包访问
	)</span>
7,字符串变量在Go一旦被赋值,字符串就不能被修改,除非进行转换。
<span style="font-size:18px;">eg. 
	// 报错
	var s string = "hello"
	s[0] = 'c'  
	
	// 正确
	s := "hello"
	c := []rune(s) 
	c[0] = 'c'
	s2 := string(c)</span>
8,rune是int32的别名,用UTF-8编码。该类型在需要遍历字符串中的字符时,可以遍历每个字节(PS:使用US ASCII编码字符串时,字节与字符等价,但Go中不存在ASCII编码),为了获取实际的字符,使用该类型。

9,在有返回值的函数中,不允许将”最终的“retrun语句包含在if...else...中
<span style="font-size:18px;">eg. 
	func example(x int) int {  // 报错: function ends without a return statement
		if x == 0 {
			return 1
		} else {
			return x
		}
	}</span>
10,break除了跳出当前循环外,后面还可以接指定标签,用标签决定退出哪个循环。
<span style="font-size:18px;">eg. 
	J: for j := 9; j < 5; j++ {
	       for i := 9; i < 10; i++ {
		       if i > 5 {
			       break J
		       }
		   }  
	   }</span>
11,range相当于迭代器,用于循环,从循环的内容中返回一个键值对。
<span style="font-size:18px;">eg.
	list := []string{"a","b","c","d","d"}
	for k,v := range list {
		... // k为数组下标,v为元素内容
	}</span>
12,switch后面表达式不必为常量或整数,也可以无表达式。无表达式时,相当于if-else if-else判断。case匹配失败不会自动向下尝试,需要使用fallthrough关键字。
<span style="font-size:18px;">eg.
	switch i {
		case 0:  // i为0时,执行func2()
		case 1:
			func1()
		default:
			func2()
	}
	
	switch i {
		case 0: 
			fallthrough  // i为0时,执行func1()
		case 1:
			func1()
		default:
			func2()
	}</span>

练习水题

1,打印1至100数字。当3的倍数打印“Fizz”,5的倍数打印“Buzz”,同时是3,5的倍数打印“FizzBuzz”。
<span style="font-size:18px;">	for i := 1; i <= 100; i++ {
		if (i % 3 == 0) && (i % 5 == 0) {
			fmt.Println("FizzBuzz")
		} else if i % 3 == 0 {
			fmt.Println("Fizz")
		} else if i % 5 == 0 {
			fmt.Println("Buzz")
		} else {
			fmt.Println(i)
		}
	}</span>

2,打印内容“A”三角。
<span style="font-size:18px;">	str := "A"
	for i := 0; i < 10; i++ {
		fmt.Printf("%sn",str)
		str = str + "A"
	}</span>

总结

在C基础上转Go感觉还比较顺手。

学习资料

《Go语言编程》
《学习Golang》

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读