GO语言基础(一)

一、从hello  world看语法

//GO语言中保留C语言中的注释方法。
//每个文件必须先声明包,GO语言中以包为管理单位。
//每个工程中只能有一个main包,一个文件夹即为一个工程。
//每个程序必须包含main包,开头处标明即可。
package main
//GO语言中不需要写分号
import (   //通过import导入包,可以导入多个,分行写,用双引号括起来,导入的包必须要用。
	"fmt"
)
//定义函数
func main() {  //注意这个括号必须和函数名在同一行
	fmt.Println("Hello World!") //打印hello world
}

二、命令行指令

go build  xxx.go
编译go代码,生成一个可执行程序
然后,运行可执行程序
go run xxx.go
不生成可执行程序,直接运行
cls windows清屏命令

三、变量命名

命名规范:
1)字母、下划线、数字
2)不能以数字开头
3)名字不能是关键字
4)区分大小写

四、变量声明和初始化

package main

import (
	"fmt"
)

func main() {
	var a int //定义变量a的类型为int
	a = 1     //给a赋值为1
	var x, y, z int
	fmt.Printf("x=%d, y=%d, z=%d\n", x, y, z)
	var b int = 2 //定义变量b的;类型为int并赋值为2
	var (         //在()内可以同时定义多个变量
		c int     //定义c的类型为int
		d int = 4 //定义d的类型为int并初始化为4
		e     = 5 //定义变量e的值为5,系统会自动推导e的类型
	)
	fmt.Printf("a=%d, b=%d, c=%d, d=%d, e=%d\n", a, b, c, d, e)
	f := 12                         //定义变量f的值为12系统会自动推断f的类型
	fmt.Printf("f type is %T\n", f) //%T可以查看值的类型

	i, j := 1, 2 //这种方式也可以同时定义多个变量
	fmt.Printf("i=%d, j=%d\n", i, j)
	//GO语言中有一个匿名变量_
	/*
		如果一个函数调用后会返回多个值,但是你只需要其中的某个值
		匿名变量是个很好的选择
	*/
	_, i, j = a, b, c
	/*
		可以同时进行多个变量赋值,可以用于两个变量值的交换
	*/
	fmt.Printf("i=%d, j=%d\n", i, j)

	a1, a2 := 20, 30
	a1, a2 = a2, a1
	fmt.Printf("a1=%d, a2=%d\n", a1, a2)
}

运行后结果可以看出,c在没有赋值的情况下值为0,GO语言中默认值为0.

五、常量

定义常量时只需要将变量定义中的var替换为const即可

package main

import (
	"fmt"
)

func main() {
	const a int = 10
	const (
		c = 20
		d = 10.1
	)
	fmt.Printf("a=%d, c=%d, d=%d\n", a, c, d)

	/*
		iota常量自动生成器,用于给常量赋值
		iota遇到const,重置为0
		每使用一次iota的值自增1
	*/
	const (
		x = iota
		y = iota
		z = iota
	)
	fmt.Printf("x=%d, y=%d, z=%d\n", x, y, z)

	const (
		x1 = iota //可以只在第一个常量处赋值,其他常量的值会在上一个常量的基础上自增1
		y1
		z1
	)
	fmt.Printf("x1=%d, y1=%d, z1=%d\n", x1, y1, z1)

	const (
		x2     = iota
		y2, z2 = iota, iota //iota如果是同一行,值都一样
	)
	fmt.Printf("x2=%d, y2=%d, z2=%d\n", x2, y2, z2)
}

六、变量类型

复数取实部虚部的方式:

real(变量)  取实部

imag(变量)  取虚部

类型别名:

type   a  int  //给类型int起别名a

字符单引号
字符串用双引号

七、格式化输出

【1】%d 十进制输出
【2】%c 字符格式输出
【3】%s 字符串格式输出
【4】%T 字符类型
【5】%t bool格式输出
【6】%f 打印浮点数
【7】%v 自动匹配类型,字符类型不匹配

八、运算符

【1】运算符
+  -   *   /    %    ++   --
【2】关系运算符
==    !=    >=     <=    >    <
【3】逻辑运算符:
&&与 ||或 !非(取反)
非0就是真,0就是假
【4】位运算符:
& 位与
| 位或
^ 异或
<< 循环左移
>> 循环右移

九、控制语句

1.if语句

package main

import (
	"fmt"
)

func main() {
	a := 10
	if a < 20 {
		fmt.Println("a<20")
	}

	if b := 30; b > 20 { //if 支持一个初始化语句,初始化语句与判断条件以分号隔开
		fmt.Println("b>20")
	}

	if x := 5; x < 5 {
		fmt.Println("x<5")
	} else {
		fmt.Println("x>=5")
	}

	if c := 40; c < 10 {
		fmt.Println("c<10")
	} else if c < 20 {
		fmt.Println("c<20")
	} else if c < 50 {
		fmt.Println("c<50")
	}

}

2.for语句

package main

import (
	"fmt"
)

func main() {
	for i := 1; i < 5; i++ { //go语言中for循环不需要加括号
		fmt.Println(i)
	}

	a := "abcd"
	for index, key := range a {   //go语言可以像python中enumrate,返回a中元素的索引和键值
		fmt.Printf("a[%d]=%c  ", index, key)
	}

	for _, key := range a {  //可以使用匿名变量
		fmt.Println(key)
	}

	for index := range a {
		fmt.Printf("a[%d]=%c   ", index, a[index])
	}
}

3.switch语句

package main

import (
	"fmt"
)

func main() {
	a := 10
	switch { //可以使用判断语句
	case a > 10:
		fmt.Println("a > 10")
	case a == 10:
		fmt.Println("a = 10")
	case a < 10:
		fmt.Println("a < 10")
	default:
		fmt.Println("error")
	}

	c := 20
	switch c {
	case 10:
		fmt.Println("c=", 10)
	case 20:
		fmt.Println("c=", 20)
	default:
		fmt.Println("error")
	}

	switch d := 30; d { //可以有一个初始化语句,用分号隔开
	case 10:
		fmt.Println("d=", 10)
	case 20:
		fmt.Println("d=", 20)
	case 30:
		fmt.Println("d=", 30)
	default:
		fmt.Println("error")
	}

	switch e := 90; e {
	case 100, 90, 80: //一行可以写多个
		fmt.Println("优秀")
	case 70, 60:
		fmt.Println("合格")
	default:
		fmt.Println("不及格")
	}
}

4.goto语句

package main

import (
	"fmt"
)

func main() {
	a := 1
Key:
	fmt.Printf("Key")
	a++
	fmt.Printf("%dgoto\n", a)
	if a > 3 {
		return
	}
	goto Key
}

十、变量输入

package main

import (
	"fmt"
)

func main() {
	var a, b, c int
	fmt.Println("输入a:")
	fmt.Scanf("%d", &a) //输入一和C语言输入一样
	fmt.Println("输入b和c:")
	fmt.Scan(&b, &c) //第二种方式
	fmt.Printf("a=%d, b=%d, c=%d", a, b, c)
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值