作为一个初学者,每当我开始一个新的源文件时,这总会得到我。所以go的package子句定义了包名,没有双引号,因为包名必须是一个标识符,它不能包含像space或者其他东西这样的无效字符。但是,当涉及到导入声明时,包名必须是双引号,因为包名正是包子句中使用的包名,它也必须是标识符(当然/允许作为分隔符)。在我看来,只会添加更多的击键而没有其他好处。我想知道为什么它的设计方式是导入必须是双引号字符串。
此外,如果我们查看其他语言,#include <foo.h>
,using System.Bar
,import java.lang.moo
这些语言都不需要导入为字符串。
答案 0 :(得分:3)
路径a/b/foo
更像是字符串而不是标识符:标识符没有分隔符,路径可能包含标识符中不允许的字符。您说包名称不能包含空格,这是正确的,但路径可以,就像包名称不能包含句点(.
),但路径可以。例如:
import "golang.org/x/exp/shiny/vendor/github.com/BurntSushi/xgb/render"`
这与C大致相同,C在问题中列为不使用字符串来指定#include
路径,但与go import语句共享相似之处。这两种形式都是类似字符串的:#include <a/b/foo.h>
和#include "a/b/foo.h"
,尽管使用<>
而不是引号来分隔字符串。