go는 고급 언어입니다. Go 언어는 Google이 2009년에 오픈소스로 공개한 고급 프로그래밍 언어입니다. 대규모 시스템 개발 과정에서 발생하는 실질적인 문제를 해결하도록 설계되었으며 동시성, 통일된 사양, 단순성, 우아함 및 강력한 성능을 지원합니다. 목표는 "파이썬 같은 동적 언어의 개발 속도와 C/C++ 같은 컴파일 언어의 성능과 보안을 모두 갖추는 것"이다.
이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.
컴퓨터 언어는 고급언어와 저급언어로 구분됩니다. 고급 언어는 주로 어셈블리 언어에 가까운 프로그래밍으로, 기본적으로 기계의 하드웨어 시스템과 분리되어 사람이 이해하기 쉬운 방식으로 프로그램을 작성합니다. 작성된 프로그램을 소스 프로그램이라고 합니다.
고급 언어는 특정 언어를 지칭하지 않지만 인기 있는 go语言
, java, c, c++, C#, pascal, python, lisp, prolog, FoxPro, Easy Language, 중국어 버전 C와 같은 많은 프로그래밍 언어를 포함합니다. 언어 등 이러한 언어의 구문과 명령 형식이 다릅니다.
Go 언어는 Google이 2009년에 오픈소스로 공개한 고급 프로그래밍 언어입니다. 이는 대규모 시스템의 개발 과정에서 발생하는 실질적인 문제를 해결하기 위해 설계되었으며 동시성, 통일된 사양, 단순성과 우아함, 강력함을 지원합니다. 성능은 많은 Go 언어에서 사용됩니다. 전도사는 이를 "클라우드 컴퓨팅 시대의 C 언어"라고 칭찬했습니다. Go 언어의 주요 목표는 "Python과 같은 동적 언어의 개발 속도와 C/C++와 같은 컴파일 언어의 성능과 보안을 모두 갖추는 것"입니다.
Go 언어는 때때로 "C와 유사한 언어" 또는 "21세기의 C 언어"로 설명됩니다. Go는 C 언어에서 유사한 표현식 구문, 제어 흐름 구조, 기본 데이터 유형, 호출 매개변수 값 전송, 포인터 및 기타 여러 아이디어를 상속합니다. 또한 C 언어가 항상 중요하게 생각하는 컴파일된 기계 코드의 실행 효율성을 가지며 기존 Seamless와 일치합니다. 운영 체제에 적응.
Go 언어에는 다음과 같은 장점이 있습니다.
Go 언어에는 다음과 같은 단점이 있습니다.
golang advanced syntax
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() { }
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() }
위 내용은 Go는 고급 언어인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!