คำตอบ:
คุณสามารถตั้งชื่อแพ็คเกจตามที่คุณต้องการเมื่อคุณนำเข้ามัน
package main
import f "fmt"
func main() {
f.Printf("Hello World\n")
}
import ."fmt"
และจากนั้นฟังก์ชั่นที่Println
เหลือfmt
อยู่ใน namespace ทั่วโลก นอกจากนี้คุณไม่จำเป็นต้องใช้เครื่องหมายอัฒภาค เคยยกเว้นว่าคุณมีข้อความสั่งหลายรายการในบรรทัด
ค่าส่งคืนที่มีชื่อสามารถบันทึกได้สองสามไบต์ ตัวอย่างเช่น:
func x()string{
r:="" //Do stuff
return r}
คุณสามารถบันทึกได้ 3 ไบต์ด้วย
func x()(r string){
//Do stuff
return}
มันมีประโยชน์มากขึ้นถ้าคุณต้องการประกาศตัวแปรหลาย ๆ ตัวที่จุดเริ่มต้นของฟังก์ชันของคุณ
หากคุณต้องการเปรียบเทียบค่าที่แตกต่างจำนวนมากกับค่าเดียวมันอาจจะประหยัดพื้นที่ในการใช้ a switch
กับเคสเดี่ยว
if x==1||x==2||x==3||x==4{}
switch x{case 1,2,3,4:}
ประกาศหลายตัวแปร:
i,s:=0,""
var(i int;s string)
การแปลงสตริงจาก Int: (จำกัด แต่บางครั้งก็มีประโยชน์)
n:=byte("9"[0])-48 // actual type is uint8
n,_:=strconv.Atoi("9")
และในทางกลับกัน
s:=string(9+48)
s:=strconv.Itoa(9)
fmt.Sprint
มีแนวโน้มที่จะบันทึกไบต์strconv.Atoi
เนื่องจากคุณอาจนำเข้าfmt
แล้ว
strconv
มีเพียงเพื่อแสดงสิ่งที่รหัสกอล์ฟจะเป็นรหัสปกติ
คอมไพเลอร์ Go มีกำหนดไว้ล่วงหน้าprint
และprintln
ฟังก์ชั่นที่ไม่ต้องการนำเข้า fmt ดังนั้นแทนที่จะเป็นสิ่งนี้
package main
import."fmt"
func main(){Printf(`Hello World
`)}
คุณสามารถเขียนสิ่งนี้
package main
func main(){print(`Hello World
`)}
โปรดทราบว่าสิ่งนี้ส่งออกไปยัง STDERR
มีหลายสิ่งในช่วงลูปเป็นทางเลือก
รุ่นมาตรฐาน:
for i,v:=range a{
// Do stuff
}
ถ้าi
, v
ได้รับการกำหนดไว้แล้วและสามารถเขียนทับ:
for i,v=range a{
// Do stuff
}
หากคุณไม่สนใจคุณค่า:
for i:=range a{
// Do stuff
}
หากคุณไม่สนใจคุณค่าและi
ได้กำหนดไว้แล้ว:
for i=range a{
// Do stuff
}
หากคุณไม่สนใจเกี่ยวกับดัชนีหรือค่า:
for range a{
// Do stuff
}
หากคุณต้องการวนซ้ำไม่สิ้นสุด:
for{
// Do stuff
}
ต้องการสตริงเพื่อขึ้นบรรทัดใหม่หรือไม่? อย่าเขียน\n
สร้างสตริงดิบด้วย backquotes และใส่บรรทัดใหม่ตามตัวอักษร
s:="\n" // 7 bytes
s:=`
` // 6 bytes
คุณสามารถใส่วงเล็บปีกกาเปิดจำนวนใดก็ได้ในหนึ่งบรรทัด แต่บรรทัดที่มีวงเล็บปีกกาเปิดอาจมีวงเล็บปีกกาปิดไม่เกินหนึ่งรายการ
แก้ไข:
func main(){if true{switch{case 1==1:for{break
}}}}
ถูกต้องด้วย:
func main(){if true{switch{case 1==1:for{break}
}}}
ถูกต้องด้วย:
func main(){if true{switch{case 1==1:for{
break}}}}
ไม่ถูกต้อง:
func main() {
if true{for{break}}
}
ไปมีความสำคัญผู้ประกอบการที่แตกต่างกันสำหรับการดำเนินงานบิต<<
, >>
, &
ฯลฯ มักจะมีความสำคัญต่ำกว่า+
และ-
ในภาษามากที่สุด แต่ในการเดินทางพวกเขามีความสำคัญเช่นเดียวกับและ*
/
Precedence Operator
5 * / % << >> & &^
4 + - | ^
3 == != < <= > >=
2 &&
1 ||
สามารถใช้เพื่อบันทึกวงเล็บบางส่วนได้
ภาษาส่วนใหญ่:
(a&b)*c
ไป:
a&b*c
ใช้ประโยชน์จากฟังก์ชั่นชั้นหนึ่งของ Go โดยการกำหนดชื่อฟังก์ชันไลบรารีแบบยาวให้กับตัวแปรตัวอักษรหนึ่งตัว
import."strings"
r:=Replace
Go
แท็ก แต่จากนั้น Go ใช้เพื่อตีกอล์ฟที่นี่หรือไม่