golang试玩

Go的安装
Go安装只需要去go官网下载msi或者zip文件进行安装或者解压就行了,无脑next,配置Go的bin目录到path就可以了

需要注意的是,配置GOPATH为项目文件路径,路径下包含三个文件夹,lib,pkg,src,记得配置GOPATH不然运行不起来

IDEA配置
GOROOT就是go的目录了(bin的父级目录)
GOPATH就是src目录了
GOPATH

package main

import (
	"fmt"
	"math"
	"time"
)

const name = "zhangsan"

func main() {
	fmt.Printf("hello, world\n")
	//values
	//go的值类型,有string,boolean,int等
	fmt.Println("go" + "lang")
	fmt.Println("7.0/3.0=", 7.0/3.0, true)
	fmt.Println(7.0, 3.0, 7.0/3, 7/3)
	fmt.Println(true && false)
	fmt.Println(1^2, 1&2, 1|2)
	fmt.Println(!true)
	//variables
	//使用var关键字来表示变量
	//变量定义就要使用,不然会报错
	var a = "initial"
	fmt.Println(a)
	//一次定义多个变量
	var b, c int = 1, 2
	fmt.Println(b, c)

	var d = true
	fmt.Println(d)
	//没有初始化会被赋值为类型的默认值,例如int会赋值0,string会复制""空串
	var e int
	fmt.Println(e)
	var f string
	print(f)

	//Constants
	//常量,go的常量可以是character,string,boolean和数字类型
	//使用const关键字定义常量,
	const s string = "constant"
	fmt.Println(s)
	//const常量也可以定义在main之外
	fmt.Println(name)

	const n = 5000000
	//3e10就是3*10^10
	const d1 = 3e10 / n
	fmt.Println(d1)
	//300
	fmt.Println(3e2)
	//数值类型只有给定类型之后才有类型,如果之前没有指定类型,可以显示的转化
	//这里显式将d1的值类型设置为64位int
	fmt.Println(int64(d1))

	//一个数值可以通过使用它的上下文来设置类型,例如设置一个变量或者函数调用
	fmt.Println(math.Sin(n))

	var ff float32 = n
	fmt.Println(ff)

	//For循环,go的for循环和java十分类似,唯一不同的就是没有了小括号
	//:=赋值,只有第一次初始化才能用,第二次会报错
	i := 1
	//只有条件,循环中控制跳出条件
	for i <= 3 {
		fmt.Println(i)
		i++
	}
	//没条件,死循环,循环中控制跳出
	for {
		fmt.Println("look")
		if i > 10 {
			//break跳出当前循环
			break
		}
		i++
	}
	//for 三部分
	for n := 0; n < 100; n++ {
		if n%2 == 0 {
			//continue跳出本次循环,进行下一次循环
			continue
		}
		fmt.Println(n)
	}

	//if-else条件分支
	//if-else
	if 7%2 == 0 {
		fmt.Println("7 is even")
	} else {
		fmt.Println("7 is odd")
	}
	//if,没else
	if 8%4 == 0 {
		fmt.Println("8 is divisible by 4")
	}
	//if-else if
	if num := 9; num < 0 {
		fmt.Println(num, " is negative")
	} else if num < 10 {
		fmt.Println(num, " has 1 digit")
	} else {
		fmt.Println(num, " has multiple digit")
	}

	//Switch
	i = 2
	fmt.Println("write", i, "as")
	switch i {
	case 1:
		fmt.Println("one")
	case 2:
		fmt.Println("two")
	case 3:
		fmt.Println("three")

	}

	switch time.Now().Weekday() {
	case time.Saturday, time.Sunday:
		fmt.Println("It is a weekend")
	default:
		fmt.Println("It is a work day")
	}
	t := time.Now()

	//switch的case可以是表达式,这个有点骚气
	switch {
	case t.Hour() < 12:
		fmt.Println("0", t.Hour())
	default:
		fmt.Println(t.Hour())
	}
	//switch可以比较类型
	//这个不是很懂,whatAmI定义为一个函数,接收一个接口??什么鬼
	//i.(type)获得传进去的东西的类型??.....以后再看吧
	whatAmI := func(i interface{}) {
		switch t1 := i.(type) {
		case bool:
			fmt.Println("I am a bool")
		case int64:
			fmt.Println("I am an int64")
		default:
			fmt.Printf("Don't know the type %T\n", t1)
		}
	}
	whatAmI(true)
	whatAmI(t)
	whatAmI("hey")

	//Array
	//数组时一指定长度带编号的元素集
	var arr [5] int
	//没赋值,全是0
	fmt.Println("emp", arr)
	arr[4] = 100
	fmt.Println("set:", arr)
	fmt.Println("get:", a[4])
	//指定长度和初始值,最后一个没有赋值,还是0
	bArr := [5]int{1, 2, 3, 4}
	fmt.Println("bArr", bArr)
	//二维数组
	var twoD [2][3]int
	for i = 0; i < 2; i++ {
		for j := 0; j < 3; j++ {
			twoD[i][j] = i + j
		}
	}
	fmt.Println(twoD)
}

参考:
go by example

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值