Home  >  Article  >  Backend Development  >  How to write code in golang

How to write code in golang

王林
王林Original
2023-05-15 11:50:07604browse

As a relatively young programming language, Golang has received more and more attention and favor, especially in the field of back-end development. This article will introduce the basic syntax and common programming paradigms of Golang to help beginners get started quickly.

1. Basic syntax

  1. Variables

There are many ways to declare variables. You can use the var keyword or the := operator. Automatic type deduction:

var i int // 默认值为0
i = 10 

j := "Hello World" // 自动推导类型为string
  1. Constant

Constant life uses the const keyword, which can be used for enumerated types, values, strings, etc.:

const (
    Pi     = 3.14159265358979323846
    Apples = 1 << iota  // Apples的值是1左移0位,即1
    Oranges            // Oranges的值是1左移1位,即2
    Bananas            // Bananas的值是1左移2位,即4
)
  1. Control structure

The control structure of Go language is the same as other languages, including if-else, switch-case, for loop and jump statement:

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 label1
fmt.Println("this line will never get executed")
label1:
fmt.Println("jumped to label1")
  1. Arrays and slices

Arrays are value types, and the length is determined when declared, while slices are reference types, and the length changes dynamically. Slices can be created through the make function, or can be generated by slicing operations:

// 数组
var arr [5]int
for 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)
  1. Structures and pointers

Structures in Golang can not only define fields, but also Define method. The pointer type of the structure can use the . and -> operators to access fields and methods:

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)
}

2. Programming paradigm

  1. Object-oriented programming

Object-oriented programming in Golang also relies heavily on structures and methods. Here we can use the interface type to define shared methods:

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())
}
  1. Concurrent programming

Golang is a language that naturally supports concurrent programming. Using the two concepts of goroutine and channel, we can easily implement efficient concurrent programs:

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)
}

The above is the basic syntax and programming paradigm of Golang. Discussion of more advanced language features and practical application scenarios requires proficiency. After mastering the language proceed to more in-depth study and research.

The above is the detailed content of How to write code in golang. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn