为什么要去双引号导入声明

时间:2016-04-16 15:32:57

标签: go

作为一个初学者,每当我开始一个新的源文件时,这总会得到我。所以go的package子句定义了包名,没有双引号,因为包名必须是一个标识符,它不能包含像space或者其他东西这样的无效字符。但是,当涉及到导入声明时,包名必须是双引号,因为包名正是包子句中使用的包名,它也必须是标识符(当然/允许作为分隔符)。在我看来,只会添加更多的击键而没有其他好处。我想知道为什么它的设计方式是导入必须是双引号字符串。

此外,如果我们查看其他语言,#include <foo.h>using System.Barimport java.lang.moo这些语言都不需要导入为字符串。

1 个答案:

答案 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",尽管使用<>而不是引号来分隔字符串。