Golang核心语法与其它语言(Java、JS、Python)核心语法的区别

一、变量:

package main
import "fmt"

// *********全局变量是允许声明但不使用的。 同一类型的多个变量可以声明在同一行************

// 这种因式分解关键字的写法一般用于声明全局变量
// var (
// 	vname1 v_type1
// 	vname2 v_type2
// )

func main(){
	// *******如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误*******
	// 声明变量的一般形式是使用 var 关键字:
	// var identifier type

	// 可以一次声明多个变量:
	// var identifier1, identifier2 type

	// 声明一个变量并初始化
	var a string = "Hello Golang"
	fmt.Println(a)

	// 一次声明多个变量
	var b, c int = 1, 2
	fmt.Println(b, c)

	// 变量声明
	// 第一种,指定变量类型,如果没有初始化,则变量默认为零值。	
	// 没有初始化就为零值
	var d int
	fmt.Println(d)

	// bool 零值为 false
	var e bool
	fmt.Println(e)

	var i int
    var f float64
    var g bool
    var s string
	fmt.Printf("%v %v %v %q\n", i, f, g, s)
	// 0 0 false ""

	// 第二种,根据值自行判定变量类型。
	// var v_name = value
	var v_name = true
	fmt.Println(v_name)

	// 第三种,如果变量已经使用 var 声明过了,再使用 := 声明变量,就产生编译错误,格式:
	// v_name := value
	// intVal := 1 相等于:var intVal int; intVal =1
	// 初始化声明:这是使用变量的首选形式,但这种不带声明格式的只能在函数体中出现
	intVal := 1
	fmt.Println(intVal)

	run := "goAhead"
	fmt.Println(run)

	// 多变量声明
	// 类型相同多个变量, 非全局变量
	// var vname1, vname2, vname3 type
	// vname1, vname2, vname3 = v1, v2, v3
	// // 和 python 很像,不需要显示声明类型,自动推断
	// var vname1, vname2, vname3 = v1, v2, v3
	// 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误
	// vname1, vname2, vname3 := v1, v2, v3
}

二、运算符:

Golang中没有“===”运算符

Golang中“++”(自增)和“--”(自减)只能在变量后面

三、条件语句:

Golang中if条件语句:如果已经走了一个分支,那么下面的分支就不会再去判断执行了

	var score int = 95
	if score >= 90 {
		fmt.Println("您的成绩为A级")
	} else if score >= 80 {
		fmt.Println("您的成绩为B级")
	} else if score >= 70 {
		fmt.Println("您的成绩为C级")
	} else if score >= 60 {
		fmt.Println("您的成绩为D级")
	} else {
		fmt.Println("您的成绩为E级")
	}

	// 输出:您的成绩为A级

Golang中“”switch”条件语句中没有“break”关键字:

	var score int = 25
	switch score / 10 {
		case 10:
			fmt.Println("您的成绩为A级")
		case 9:
			fmt.Println("您的成绩为B级")
		case 8:
			fmt.Println("您的成绩为C级")
		case 7:
			fmt.Println("您的成绩为D级")
		case 6:
			fmt.Println("您的成绩为E级")
		default:
			fmt.Println("您的成绩为G级")
	}
	// default 分支可以放在任意位置,不一定要放在最后
	// 输出:您的成绩为G级

四、循环语句:

Golang中只有“for循环”,没有“while循环”:

	// range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素
	var str string = "hi,Golang你好"
	for i, value: = range str {
		fmt.Printf("索引为%d,具体的值为%c", i, value)
		fmt.Println()
	}
	// 索引为0,具体的值为h
	// 索引为1,具体的值为i
	// 索引为2,具体的值为,
	// 索引为3,具体的值为G
	// 索引为4,具体的值为o
	// 索引为5,具体的值为l
	// 索引为6,具体的值为a
	// 索引为7,具体的值为n
	// 索引为8,具体的值为g
	// 索引为9,具体的值为你******
	// 索引为12,具体的值为好******

五、函数:

Golang中函数可以返回多个值:

package main
import "fmt"

func getResult(a int, b string, c bool) (int, string, bool) {
	return a, b, c
}

func main() {
	x, y, z := getResult(1, "hi", true)
	fmt.Println(x, y, z)
}

六、类型转换:

go 不支持隐式转换类型

package main
import "fmt"

func main() {  
    var a int64 = 3
    var b int32
    b = a
    fmt.Printf("b 为 : %d", b)
}

此时会报错

cannot use a (type int64) as type int32 in assignment
cannot use b (type int32) as type string in argument to fmt.Printf

但是如果改成 b = int32(a) 就不会报错了:

package main
import "fmt"

func main() {  
    var a int64 = 3
    var b int32
    b = int32(a)
    fmt.Printf("b 为 : %d", b)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值