Rumah >pembangunan bahagian belakang >Golang >Adakah go bahasa peringkat tinggi?
go ialah bahasa peringkat tinggi. Bahasa Go ialah bahasa pengaturcaraan peringkat tinggi yang disumberkan oleh Google pada tahun 2009. Ia direka untuk menyelesaikan masalah praktikal dalam proses pembangunan sistem berskala besar Ia menyokong konkurensi, spesifikasi bersatu, kesederhanaan, keanggunan dan prestasi utamanya matlamatnya adalah untuk "mempunyai kedua-dua Kepantasan pembangunan bahasa dinamik seperti Python dan prestasi serta keselamatan bahasa yang disusun seperti C/C++."
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Bahasa komputer dibahagikan kepada bahasa peringkat tinggi dan bahasa peringkat rendah. Bahasa peringkat tinggi terutamanya relatif kepada bahasa himpunan Ia adalah pengaturcaraan yang lebih dekat dengan bahasa semula jadi dan formula matematik Ia pada asasnya dipisahkan daripada sistem perkakasan mesin dan menulis program dengan cara yang lebih mudah difahami oleh orang ramai. Program yang ditulis dipanggil program sumber.
Bahasa peringkat tinggi tidak merujuk kepada bahasa tertentu, tetapi merangkumi banyak bahasa pengaturcaraan, seperti go语言
yang popular, java, c, c++, C#, pascal, python, lisp, prolog, FoxPro, Bahasa Yi, bahasa C versi Cina, dll. Format sintaks dan arahan bahasa ini berbeza.
Bahasa Go ialah bahasa pengaturcaraan peringkat tinggi sumber terbuka oleh Google pada tahun 2009 Ia direka untuk menyelesaikan masalah praktikal dalam proses pembangunan sistem berskala besar spesifikasi, kesederhanaan dan keanggunan , dengan prestasi yang hebat, telah dipuji oleh ramai penginjil bahasa Go sebagai "bahasa C dalam era pengkomputeran awan". Matlamat utama bahasa Go adalah untuk "mempunyai kedua-dua kelajuan pembangunan bahasa dinamik seperti Python dan prestasi serta keselamatan bahasa yang disusun seperti C/C++."
Bahasa Go kadangkala digambarkan sebagai "bahasa seperti C", atau "bahasa C abad ke-21". Go mewarisi sintaks ungkapan yang serupa, struktur aliran kawalan, jenis data asas, pemindahan nilai parameter panggilan, penunjuk dan banyak idea lain daripada bahasa C Ia juga mempunyai kecekapan menjalankan kod mesin tersusun yang sentiasa dihargai oleh bahasa C dan konsisten dengan Seamless sedia ada penyesuaian kepada sistem pengendalian.
Suara Pengaturcara: Saya boleh membuat prototaip, menguji dan menggunakan sistem pengeluaran dalam beberapa hari jika dunia sebenar memerlukannya, dan Ia boleh mengendalikan 5 kali lebih banyak permintaan sesaat daripada sebelumnya, dan CPU dan overhed memori masih sangat kecil. Saya rasa hanya bahasa Go boleh melakukannya.
Bahasa Go mempunyai kelebihan berikut:
Bahasa Go mempunyai kekurangan berikut:
sintaks lanjutan golang
package main import "fmt" //rune相当于go的char 使用utf8编码,中文占3个字节,英文一个字节 func main() { s:= "ok我爱你" fmt.Println(len(s)) // 11 fmt.Println(len([]rune(s))) // 5 fmt.Println(len([]byte(s))) // 11 // str是int32类型 for i, str := range s { fmt.Printf("%d %c", i, str) fmt.Println() } // str是byte类型 for i, str := range []byte(s) { fmt.Printf("%d %x", i, str) fmt.Println() } // str是rune类型 for i, str := range []rune(s) { fmt.Printf("%d %c", i, str) fmt.Println() } }
有如下 arr := [...]{0, 1, 2, 3, 4, 5, 6, 7} s1 := arr[2:6] s2 := s1[3:5] 则 s1值为[2,3,4,5], len(s1)=4, cap(s1)=6 s2值为[5,6], len(s2)=2, cap(s2)=3 slice底层是数组 slice可以向后扩展,不可以向前扩展 s[i]不可以超过len(s), 向后扩展不可以超越底层数组cap(s)
接着上题 arr := [...]{0, 1, 2, 3, 4, 5, 6, 7} s1 := arr[2:6] s2 := s1[3:5] s3 := append(s2, 10) s4 := append(s3, 11) s5 := append(s4, 12) 则 s1值为[2,3,4,5] s2值为[5,6] s3值为[5,6,10] s4值为[5,6,10,11] s5值为[5,6,10,11,12] arr值为[0, 1, 2, 3, 4, 5, 6, 10] 由于s4和时s5已经超过arr的cap,此时系统会生成一个新的数组,所以s4和s5是对新数组的view,即s4和s5 no longer view arr
package main // 如何扩充系统类型或者别人的类型:通过结构体继承,通过类型起别名 type queue []int func (q *queue) push(v int) { *q = append(*q, v) } func (q *queue) pop() int { head := (*q)[0] *q = (*q)[1:] return head } func (q *queue) isEmpty() bool { return len(*q) == 0 } func main() { }
Penerima nilai vs penerima penunjuk,
Penerima nilai adalah unik untuk Go bahasa
Untuk menukar kandungan, anda mesti menggunakan penerima penunjuk.
Kedua-dua penerima nilai/penunjuk boleh memanggil panggilan nilai/penunjuk
package main import "fmt" type node struct { value int left, right *node } func newNode(value int) *node{ return &node{ value: value, left: nil, right: nil, } } func (n node) setVal(val int) { n.value = val } func (n *node) setValue(vall int) { n.value = vall } func (n node) print() { fmt.Println(n.value) } func (n *node) travel() { if n == nil { return } fmt.Println(n.value) n.left.travel() n.right.travel() } func main() { var root node root = node{} root.left = &node{value:5} root.right = new(node) root.left.right = &node{4, nil, nil} root.right.left = newNode(7) // 调用指针方法,相当于引用传递,可以改变外部的值 root.left.setValue(100) fmt.Println(root.left.value) // 值传递,调用值方法,方法内部不能改变外部值 root.left.setVal(99) fmt.Println(root.left.value) // 先序遍历 root.travel() }antara muka
Atas ialah kandungan terperinci Adakah go bahasa peringkat tinggi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!