2013-11-04 14 views
2

http://golang.org/ref/spec#Import_declarationsGo「import」語法是否特別且獨特?

import "package1" 

import ("package1";"package2") 

import (
     "package1" 
     "package2" 
     ) 

是 「導入」 語法的東西導入包特別製作?它看起來像一個函數調用,使用「;」而不是「,」來進行參數化。看來,它甚至可能是一個紅寶石式的方法調用(即:無「()」)

PS 想到我會問這個問題得到一些觀點。我非常喜歡和Go一起工作,但它的一些語法看起來有點不一致,有時冗長。讓我想知道爲它創建一個預處理器是多麼困難,就像C++是/正在C來清理一些語法一樣。稱它爲Go ++(走得更快)。我將Objective C 2.0視爲改善程序員工作流程的一個很好的例子(例如:dictionary/array/number literals)。 Go ++在概念上也類似於exlixir-lang.org(在Erlang之上的語法增強)。

回答

2

import是特別的。它需要位於文件的頂部,它的參數始終是文字。這必須發生,因爲嘗試管理依賴關係以加快構建時間,Go會做很多事情。

它也不能只是一個普通的環境,因爲它將變量注入當前範圍,這是其他功能無法做到的。

至於語法,是啊有些部分不是很愉快。但對於我和其他大多數寫Go的人來說,這是我所遇到的一個非常小的問題。好處在於,語法解析非常簡單,所以工具相對簡單,這就是爲什麼我只是爲了幾個按鍵而改變語法的原因。

+1

我知道它位於頂部,但具體來說,導入的語法是否出現在其他任何golang概念中? – Brenden

+0

@Brenden Kinda,分號插入必須知道它,但就是這樣 – jozefg

+3

'var'和'const'有一個類似的語法:可以像這樣將多個'var'語句組合在一起:http://play.golang.org/p/f9NpjEPXQN - 通常與'iota'一起用於定義大量相關常量,例如http://golang.org/src/pkg/text/template/parse/lex.go第38行 – MatrixFrog