作为一门相对年轻的编程语言,golang受到了越来越多的关注和青睐,尤其在后端开发领域中备受欢迎。本文将介绍golang的基础语法和常用的编程范式,帮助初学者快速入门。
一、基础语法
变量声明变量有多种方式,可以使用var关键字,也可以使用:=运算符进行自动类型推导:
var i int // 默认值为0i = 10 j := "hello world" // 自动推导类型为string
常量常量生命使用const关键字,可以用于枚举类型、数值、字符串等:
const ( pi = 3.14159265358979323846 apples = 1 << iota // apples的值是1左移0位,即1 oranges // oranges的值是1左移1位,即2 bananas // bananas的值是1左移2位,即4)
控制结构go语言的控制结构和其他语言一样,有if-else、switch-case、for循环和跳转语句:
if i > 10 { fmt.println("i is greater than 10")} else { fmt.println("i is less than or equal to 10")}switch { case i < 0: fmt.println("i is negative") case i > 0: fmt.println("i is positive") default: fmt.println("i is zero")}for i := 0; i < 10; i++ { fmt.println(i)}// 跳转语句goto label1fmt.println("this line will never get executed")label1:fmt.println("jumped to label1")
数组和切片数组是值类型,长度是在声明时确定的,而切片是引用类型,长度是动态变化的。切片可以通过make函数进行创建,也可以进行切片操作生成:
// 数组var arr [5]intfor i := 0; i < 5; i++ { arr[i] = i}// 切片的创建和操作var slice1 []int = arr[1:3]slice2 := make([]int, 5, 10) // 第2个参数是长度,第三个参数是容量slice2 = append(slice2, 1, 2, 3)
结构体和指针golang中的结构体不仅可以定义字段,还可以定义方法。结构体的指针类型可以使用.和->操作符访问字段和方法:
type person struct { name string age int}func (p person) sayhello() { fmt.println("hello, my name is", p.name, ", and i am", p.age, "years old.")}func main() { p := person{name: "alice", age: 30} p.sayhello() pp := &p fmt.println(pp.age)}
二、编程范式
面向对象编程golang中的面向对象编程同样重度依赖于结构体和方法。这里我们可以使用接口(interface)类型来定义共享的方法:
type animal interface { speak() string}type dog struct { name string}func (d dog) speak() string { return "woof! i am " + d.name}func main() { d := dog{"fido"} fmt.println(d.speak())}
并发编程golang是一门天然地支持并发编程的语言。使用goroutine和channel两个概念,我们可以很容易地实现高效的并发程序:
func worker(id int, c chan int) { for { n, ok := <-c if !ok { break } fmt.printf("worker %d received %d", id, n) } fmt.printf("worker %d is done", id)}func createworker(id int) chan<- int { c := make(chan int) go worker(id, c) return c}func main() { c := make(chan int) var wg sync.waitgroup for i := 0; i < 10; i++ { wg.add(1) go func(id int) { c := createworker(id) for j := 0; j < 10; j++ { c <- j } wg.done() }(i) } wg.wait() close(c) time.sleep(time.second)}
以上就是golang的基础语法和编程范式,更多高级语言特性和实际应用场景的讨论,需要熟练掌握语言后进行更深入的学习和研究。
以上就是golang怎么写代码的详细内容。