第六届字节跳动青训营第一课go语言基础(实战) | 青训营

77 阅读3分钟

gong语言基础

介绍

go 语言是一个轻量级语言,它拥有协程,可以让开发人员轻松完成多核和网络编程,同时,它具有自动内存管理和垃圾回收机制,提高内存的利用率.在编写风格上,go语言结合c,c++,java,javascript的语法特点,形成语句简短,面向对象,垃圾回收机制,存在强弱类型的风格.

基础语法

变量

go语言也遵循强变量的规则,也就是说必须先声明变量,再定义和初始化变量,其编写风格为 var/const 变量名称 变量类型 或 变量名称 := 字面值(该形式允许同时为多个变量赋值). 其变量类型有整数,浮点数,布尔类型,复数,字符串,以及其他. 如下我使用了一个程序定义了整数,浮点数,布尔类型,字符串等多个变量并将其输出. 核心代码


//定义变量并格式化输出  
var number int  
const (  
name string = "贾琦"  
age = 22  
)  
number = 13  
fmt.Println("显示的整数是", number)  
fmt.Println("我的名字是", name)  
fmt.Println("我的年龄是", age)  
}
复制代码

运算符与表达式

我们通常使用运算符操作变量,常量和字面值,通过cpu运算完成最终计算. 和其他语言一样,go语言也有算数运算符,逻辑运算符,布尔运算符,自增自减运算符等等.其优先级也与其他语言一样. 同样,用一个运算符可以有多种用途.就像+在实数表达式中做加法运算,在字符串中又可以做字符串拼接.

控制与循环

有时,程序需要在不同的程序中完成不同语句块的计算,也就是说根据条件执行结果分支的执行不同操作. go语言中条件语句与if关键字使用一个空格区分.左括号必须与if语句在同一行,否则会出现编译错误.循环语句也是同样的道理.

函数

go语言函数是基本的代码块,用于执行一个任务.Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。 核心代码 /** 描述:该程序用于替换字符串中的某个字符 */ var line string = "hello world" c := []rune(line) c[0] = 'a' defaultString := string(c) fmt.Println("源字符串是", line) fmt.Println("改变后的字符串是", defaultString) }

数组

Go 语言提供了数组类型的数据结构。

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。 我设计程序完成了数组的反转和迭代器输出

`package main

import "fmt"

/*
*
该程序用于反转数组,时间复杂度为O(n)
*/
func main() {
list := []int32{1, 2, 3, 4, 5}
for i, j := 0, len(list)-1; i < j; i, j = i+1, j-1 {
list[i], list[j] = list[j], list[i]
}

//使用迭代器打印数组
for pos, char := range list {
fmt.Println(pos, " ", char)
}
//for i := 0; i < len(list); i++ {
// fmt.Println(list[i])
//}
}`

创新开发

根据老师的讲解,我自己使用go语言完成了猜数字的游戏开发.该程序用于描述猜数字的游戏,系统将会生成一个1到100的随机数.

客户输入数字,系统会与数字匹配,显示猜测数随机数的大小关系直至客户猜测正确为止 如下是代码

核心代码 `func main() {
maxNum := 100
//使用时间戳初始化随机化种子
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)

fmt.Println("Please input a number")
reader := bufio.NewReader(os.Stdin)
for {
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error is occured while reading input,please try again", err)
return
continue
}
input = strings.TrimSpace(input) //去除字符串前后所有的字符串

guess, err := strconv.Atoi(input) //将字符串转换为整数
if err != nil {
fmt.Println("Invalid input.Please enter an integer value")
return
continue
}
fmt.Println("Your guess is ", guess)

if guess > secretNumber {
fmt.Println("Your guess is bigger than the secret number,please try again")
} else if guess < secretNumber {
fmt.Println("Your guess is smaller than the secret number,please try again")
} else {
fmt.Println("Correct,you Legend")
break
}
}
}`