[インデックス 16742] ファイルの概要
このコミットは、Goコンパイラ(cmd/gc
)におけるエラーメッセージの改善に関するものです。具体的には、パッケージをinit
という名前でインポートしようとした際に、より適切で分かりやすいエラーメッセージが表示されるように修正されました。Go言語の仕様では、init
は特別な関数名であり、パッケージのインポートエイリアスとして使用することはできません。このコミットは、この制約に違反した場合のユーザー体験を向上させることを目的としています。
コミット
commit 1d4ed0c86bd58b3ddfbeed831511e487e017dc1d
Author: Russ Cox <rsc@golang.org>
Date: Thu Jul 11 22:40:21 2013 -0400
cmd/gc: fix error message for import as 'init'
Fixes #5853.
R=ken2
CC=golang-dev
https://golang.org/cl/11104044
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/1d4ed0c86bd58b3ddfbeed831511e487e017dc1d
元コミット内容
cmd/gc: fix error message for import as 'init'
Fixes #5853.
R=ken2
CC=golang-dev
https://golang.org/cl/11104044
変更の背景
この変更は、Go言語のコンパイラが、パッケージをinit
という名前でインポートしようとした際に、誤解を招く可能性のあるエラーメッセージを生成していた問題を修正するために行われました。具体的には、Go Issue 5853で報告された問題に対応しています。
Go言語では、init
関数は特別な役割を持ちます。各パッケージは、プログラムの実行開始前に初期化処理を行うために、引数も戻り値も持たないinit
関数を複数定義することができます。これらのinit
関数は、パッケージのインポート順序に基づいて自動的に呼び出されます。
しかし、Goのパッケージインポート構文では、インポートするパッケージに別名を付けることができます(例: import myalias "path/to/package"
)。この別名としてinit
を使用しようとすると、コンパイラは構文エラーとして処理していましたが、そのエラーメッセージが「init
は関数でなければならない」というような、文脈にそぐわないものでした。
このコミットの目的は、ユーザーがinit
をインポートエイリアスとして使用しようとした際に、より正確で分かりやすいエラーメッセージ「cannot import package as init - init must be a func
」(パッケージをinitとしてインポートすることはできません - initは関数でなければなりません)を表示するようにコンパイラを修正することでした。これにより、開発者はGo言語のinit
の特殊性をより正確に理解し、問題を迅速に解決できるようになります。
前提知識の解説
Go言語のinit
関数
Go言語のinit
関数は、パッケージの初期化のために使用される特別な関数です。
- 自動実行:
init
関数は、main
関数が実行される前に、そのパッケージがインポートされた際に自動的に実行されます。 - 引数と戻り値:
init
関数は引数を取らず、戻り値も持ちません。 - 複数定義: 1つのパッケージ内に複数の
init
関数を定義することができます。これらは定義された順序で実行されます。 - 用途: 主に、パッケージレベルの変数の初期化、外部リソースへの接続、設定の読み込みなど、プログラムの実行開始前に一度だけ行われるべき処理に使用されます。
Go言語のパッケージインポート
Go言語では、import
キーワードを使用して他のパッケージの機能を利用します。
- 標準インポート:
import "fmt"
のように、パッケージのパスを直接指定します。この場合、パッケージ内のエクスポートされた要素はfmt.Println
のようにパッケージ名で修飾してアクセスします。 - エイリアスインポート:
import myfmt "fmt"
のように、パッケージに別名(エイリアス)を付けてインポートできます。この場合、myfmt.Println
のようにエイリアス名でアクセスします。 - ドットインポート:
import . "fmt"
のように、パッケージ名を省略してインポートできます。この場合、Println
のようにパッケージ名を修飾せずに直接要素にアクセスできます。これは名前の衝突を避けるため、通常は推奨されません。 - ブランクインポート:
import _ "image/png"
のように、パッケージをインポートするだけで、そのパッケージ内のエクスポートされた要素を直接使用しない場合に用います。これは、インポートされたパッケージのinit
関数を実行したい場合に利用されます(例: 画像フォーマットの登録など)。
Goコンパイラ(cmd/gc
)と構文解析
Goコンパイラ(cmd/gc
)は、Goのソースコードを機械語に変換する主要なツールチェーンの一部です。コンパイラは、ソースコードを処理する際に、以下の主要なフェーズを経ます。
- 字句解析 (Lexical Analysis): ソースコードをトークン(キーワード、識別子、演算子など)のストリームに分解します。
- 構文解析 (Syntax Analysis): トークンのストリームを解析し、言語の文法規則に従っているかを確認します。このフェーズでは、抽象構文木(AST)が構築されます。Goコンパイラでは、Yacc/Bisonのようなパーサジェネレータが生成したパーサが使用されることが多く、
go.y
ファイルはGo言語の文法規則を定義するYaccの入力ファイルです。 - 意味解析 (Semantic Analysis): 構文的に正しいコードが意味的にも正しいか(型チェック、変数宣言の確認など)を検証します。
- 中間コード生成: ASTを中間表現に変換します。
- 最適化: 中間コードを最適化します。
- コード生成: 最終的な機械語コードを生成します。
このコミットは、主に構文解析フェーズにおけるエラーハンドリングの改善に焦点を当てています。go.y
ファイルはGo言語の文法規則を定義しており、y.tab.c
はそのgo.y
から生成されたC言語のパーサコードです。
技術的詳細
このコミットの技術的詳細は、Goコンパイラの構文解析器(パーサ)が、import
文におけるエイリアス名の処理方法を変更した点にあります。
Go言語の文法は、go.y
というYacc(またはBison)形式のファイルで定義されています。このファイルは、Goのソースコードがどのように構成されるべきかを記述したBNF(バッカス・ナウア記法)のような規則の集合です。Yaccは、このgo.y
ファイルを読み込み、C言語のパーサコード(y.tab.c
)を生成します。
変更前は、import init "mypackage"
のような記述があった場合、パーサはこれを一般的な識別子の使用として処理し、その後の意味解析フェーズでinit
が関数として期待される文脈ではないため、不適切なエラーメッセージを生成していました。
このコミットでは、go.y
ファイル内のimport_stmt
(インポート文)の規則に、init
という名前がエイリアスとして使用された場合の特別なチェックが追加されました。具体的には、インポートエイリアスとして指定されたシンボル名が"init"
と文字列比較され、一致した場合には、yyerror
関数を呼び出して、より具体的で適切なエラーメッセージ「cannot import package as init - init must be a func
」を出力するように変更されました。
yyerror
はYaccによって提供される関数で、構文解析中にエラーが発生した際に呼び出され、エラーメッセージをユーザーに表示するために使用されます。この変更により、構文解析の段階でinit
エイリアスの不正使用を検出し、意味的に正しいエラーメッセージを即座に提供できるようになりました。
また、y.tab.c
ファイルには、go.y
の変更に伴う行番号の調整や、isrelease
という静的変数の追加が見られます。isrelease
は、Goのリリースバージョンであるかどうかを判定するために使用されるもので、このコミットの直接的な目的であるinit
エイリアスのエラーメッセージ修正とは独立した変更ですが、同じコミットで含まれています。これは、Go 1.2で導入された3-index slice(a[low:high:max]
)がリリース版では利用できないようにするためのチェックに関連しているようです。この部分の変更は、init
エイリアスの修正とは直接関係ありませんが、コンパイラの開発プロセスにおいて、複数の小さな修正が1つのコミットにまとめられることがある典型的な例です。
コアとなるコードの変更箇所
src/cmd/gc/go.y
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -197,6 +197,10 @@ import_stmt:
importdot(ipkg, pack);
break;
}
+ if(strcmp(my->name, "init") == 0) {
+ yyerror("cannot import package as init - init must be a func");
+ break;
+ }
if(my->name[0] == '_' && my->name[1] == '\0')
break;
if(my->def) {
src/cmd/gc/y.tab.c
y.tab.c
の変更は、go.y
の変更によって自動生成されるコードの行番号のずれと、isrelease
という新しい静的変数の追加が主です。isrelease
の追加は、Go 1.2の3-index sliceに関する実験的な機能のリリース版での制限に関連しており、init
エイリアスのエラー修正とは直接関係ありません。
--- a/src/cmd/gc/y.tab.c
+++ b/src/cmd/gc/y.tab.c
@@ -179,6 +179,8 @@
#include <libc.h>
#include "go.h"
+static int isrelease = -1;
+
static void fixlbrace(int);\n
@@ -202,7 +204,7 @@ static void fixlbrace(int);\n
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 28 "go.y"
+#line 30 "go.y"
{\n Node*\t\tnode;\n NodeList*\t\tlist;\n@@ -212,7 +214,7 @@ typedef union YYSTYPE
\tint\t\ti;\n }\n /* Line 193 of yacc.c. */\n-#line 216 "y.tab.c"
+#line 218 "y.tab.c"
YYSTYPE;\n # define yystype YYSTYPE /* obsolescent; will be withdrawn */\n # define YYSTYPE_IS_DECLARED 1
@@ -225,7 +227,7 @@ typedef union YYSTYPE
/* Line 216 of yacc.c. */
-#line 229 "y.tab.c"
+#line 231 "y.tab.c"
#ifdef short
# undef short
@@ -658,42 +660,42 @@ static const yytype_int16 yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{\n- 0, 124, 124, 133, 140, 151, 151, 166, 167, 170,\n- 171, 172, 175, 208, 219, 220, 223, 230, 237, 246,\n- 260, 261, 268, 268, 281, 285, 286, 290, 295, 301,\n- 305, 309, 313, 319, 325, 331, 336, 340, 344, 350,\n- 356, 360, 364, 370, 374, 380, 381, 385, 391, 400,\n- 406, 424, 429, 441, 457, 462, 469, 489, 507, 516,\n- 535, 534, 549, 548, 579, 582, 589, 588, 599, 605,\n- 614, 625, 631, 634, 642, 641, 652, 658, 670, 674,\n- 679, 669, 700, 699, 712, 715, 721, 724, 736, 740,\n- 735, 758, 757, 773, 774, 778, 782, 786, 790, 794,\n- 798, 802, 806, 810, 814, 818, 822, 826, 830, 834,\n- 838, 842, 846, 851, 857, 858, 862, 873, 877, 881,\n- 885, 890, 894, 904, 908, 913, 921, 925, 926, 937,\n- 941, 945, 949, 953, 961, 962, 968, 975, 981, 988,\n- 991, 998, 1004, 1021, 1028, 1029, 1036, 1037, 1056, 1057,\n- 1060, 1063, 1067, 1078, 1087, 1093, 1096, 1099, 1106, 1107,\n- 1113, 1128, 1136, 1148, 1153, 1159, 1160, 1161, 1162, 1163,\n- 1164, 1170, 1171, 1172, 1173, 1179, 1180, 1181, 1182, 1183,\n- 1189, 1190, 1193, 1196, 1197, 1198, 1199, 1200, 1203, 1204,\n- 1217, 1221, 1226, 1231, 1236, 1240, 1241, 1244, 1250, 1257,\n- 1263, 1270, 1276, 1287, 1301, 1330, 1370, 1395, 1413, 1422,\n- 1425, 1433, 1437, 1441, 1448, 1454, 1459, 1471, 1474, 1484,\n- 1485, 1491, 1492, 1498, 1502, 1508, 1509, 1515, 1519, 1525,\n- 1548, 1553, 1559, 1565, 1572, 1581, 1590, 1605, 1611, 1616,\n- 1620, 1627, 1640, 1641, 1647, 1653, 1656, 1660, 1666, 1669,\n- 1678, 1681, 1682, 1686, 1687, 1693, 1694, 1695, 1696, 1697,\n- 1699, 1698, 1713, 1718, 1722, 1726, 1730, 1734, 1739, 1758,\n- 1764, 1772, 1776, 1782, 1786, 1792, 1796, 1802, 1806, 1815,\n- 1819, 1823, 1827, 1833, 1836, 1844, 1845, 1847, 1848, 1851,\n- 1854, 1857, 1860, 1863, 1866, 1869, 1872, 1875, 1878, 1881,\n- 1884, 1887, 1890, 1896, 1900, 1904, 1908, 1912, 1916, 1936,\n- 1943, 1954, 1955, 1956, 1959, 1960, 1963, 1967, 1977, 1981,\n- 1985, 1989, 1993, 1997, 2001, 2007, 2013, 2021, 2029, 2035,\n- 2042, 2058, 2076, 2080, 2086, 2089, 2092, 2096, 2106, 2110,\n- 2125, 2133, 2134, 2146, 2147, 2150, 2154, 2160, 2164, 2170,\n- 2174
+ 0, 126, 126, 135, 142, 153, 153, 168, 169, 172,\n+ 173, 174, 177, 214, 225, 226, 229, 236, 243, 252,\n+ 266, 267, 274, 274, 287, 291, 292, 296, 301, 307,\n+ 311, 315, 319, 325, 331, 337, 342, 346, 350, 356,\n+ 362, 366, 370, 376, 380, 386, 387, 391, 397, 406,\n+ 412, 430, 435, 447, 463, 468, 475, 495, 513, 522,\n+ 541, 540, 555, 554, 585, 588, 595, 594, 605, 611,\n+ 620, 631, 637, 640, 648, 647, 658, 664, 676, 680,\n+ 685, 675, 706, 705, 718, 721, 727, 730, 742, 746,\n+ 741, 764, 763, 779, 780, 784, 788, 792, 796, 800,\n+ 804, 808, 812, 816, 820, 824, 828, 832, 836, 840,\n+ 844, 848, 852, 857, 863, 864, 868, 879, 883, 887,\n+ 891, 896, 900, 910, 914, 919, 927, 931, 932, 943,\n+ 947, 951, 955, 959, 974, 975, 981, 988, 994, 1001,\n+ 1004, 1011, 1017, 1034, 1041, 1042, 1049, 1050, 1069, 1070,\n+ 1073, 1076, 1080, 1091, 1100, 1106, 1109, 1112, 1119, 1120,\n+ 1126, 1141, 1149, 1161, 1166, 1172, 1173, 1174, 1175, 1176,\n+ 1177, 1183, 1184, 1185, 1186, 1192, 1193, 1194, 1195, 1196,\n+ 1202, 1203, 1206, 1209, 1210, 1211, 1212, 1213, 1216, 1217,\n+ 1230, 1234, 1239, 1244, 1249, 1253, 1254, 1257, 1263, 1270,\n+ 1276, 1283, 1289, 1300, 1314, 1343, 1383, 1408, 1426, 1435,\n+ 1438, 1446, 1450, 1454, 1461, 1467, 1472, 1484, 1487, 1497,\n+ 1498, 1504, 1505, 1511, 1515, 1521, 1522, 1528, 1532, 1538,\n+ 1561, 1566, 1572, 1578, 1585, 1594, 1603, 1618, 1624, 1629,\n+ 1633, 1640, 1653, 1654, 1660, 1666, 1669, 1673, 1679, 1682,\n+ 1691, 1694, 1695, 1699, 1700, 1706, 1707, 1708, 1709, 1710,\n+ 1712, 1711, 1726, 1731, 1735, 1739, 1743, 1747, 1752, 1771,\n+ 1777, 1785, 1789, 1795, 1799, 1805, 1809, 1815, 1819, 1828,\n+ 1832, 1836, 1840, 1846, 1849, 1857, 1858, 1860, 1861, 1864,\n+ 1867, 1870, 1873, 1876, 1879, 1882, 1885, 1888, 1891, 1894,\n+ 1897, 1900, 1903, 1909, 1913, 1917, 1921, 1925, 1929, 1949,\n+ 1956, 1967, 1968, 1969, 1972, 1973, 1976, 1980, 1990, 1994,\n+ 1998, 2002, 2006, 2010, 2014, 2020, 2026, 2034, 2042, 2048,\n+ 2055, 2071, 2089, 2093, 2099, 2102, 2105, 2109, 2119, 2123,\n+ 2138, 2146, 2147, 2159, 2160, 2163, 2167, 2173, 2177, 2183,\n+ 2187\n };\n #endif\n \n@@ -2369,14 +2371,14 @@ yyreduce:\n switch (yyn)\n {\n case 2:\n-#line 128 "go.y"\n+#line 130 "go.y"\n {\n \t\txtop = concat(xtop, (yyvsp[(4) - (4)].list));\n \t}\n break;\n \n case 3:\n-#line 134 "go.y"\n+#line 136 "go.y"\n {\n \t\tprevlineno = lineno;\n \t\tyyerror("package statement must be first");\n@@ -2386,14 +2388,14 @@ yyreduce:\n break;\n \n case 4:\n-#line 141 "go.y"\n+#line 143 "go.y"\n {\n \t\tmkpackage((yyvsp[(2) - (3)].sym)->name);\n \t}\n break;\n \n case 5:\n-#line 151 "go.y"\n+#line 153 "go.y"\n {\n \t\timportpkg = runtimepkg;\n \n@@ -2406,14 +2408,14 @@ yyreduce:\n break;\n \n case 6:\n-#line 162 "go.y"\n+#line 164 "go.y"\n {\n \t\timportpkg = nil;\n \t}\n break;\n \n case 12:\n-#line 176 "go.y"\n+#line 178 "go.y"\n {\n \t\tPkg *ipkg;\n \t\tSym *my;\n@@ -2436,6 +2438,10 @@ yyreduce:\n \t\t\timportdot(ipkg, pack);\n \t\t\tbreak;\n \t\t}\n+\t\tif(strcmp(my->name, "init") == 0) {\n+\t\t\tyyerror("cannot import package as init - init must be a func");\n+\t\t\tbreak;\n+\t\t}\n \t\tif(my->name[0] == '_' && my->name[1] == '\0')\n \t\t\tbreak;\n \t\tif(my->def) {\n@@ -2449,7 +2455,7 @@ yyreduce:\n break;\n \n case 13:\n-#line 209 "go.y"\n+#line 215 "go.y"\n {\n \t\t// When an invalid import path is passed to importfile,\n \t\t// it calls yyerror and then sets up a fake import with\n@@ -2461,7 +2467,7 @@ yyreduce:\n break;\n \n case 16:\n-#line 224 "go.y"\n+#line 230 "go.y"\n {\n \t\t// import with original name\n \t\t(yyval.i) = parserline();\n@@ -2471,7 +2477,7 @@ yyreduce:\n break;\n \n case 17:\n-#line 231 "go.y"\n+#line 237 "go.y"\n {\n \t\t// import with given name\n \t\t(yyval.i) = parserline();\n@@ -2481,7 +2487,7 @@ yyreduce:\n break;\n \n case 18:\n-#line 238 "go.y"\n+#line 244 "go.y"\n {\n \t\t// import into my name space\n \t\t(yyval.i) = parserline();\n@@ -2491,7 +2497,7 @@ yyreduce:\n break;\n \n case 19:\n-#line 247 "go.y"\n+#line 253 "go.y"\n {\n \t\tif(importpkg->name == nil) {\n \t\t\timportpkg->name = (yyvsp[(2) - (4)].sym)->name;\n@@ -2507,7 +2513,7 @@ yyreduce:\n break;\n \n case 21:\n-#line 262 "go.y"\n+#line 268 "go.y"\n {\n \t\tif(strcmp((yyvsp[(1) - (1)].sym)->name, "safe") == 0)\n \t\t\tcurio.importsafe = 1;\n@@ -2515,14 +2521,14 @@ yyreduce:\n break;\n \n case 22:\n-#line 268 "go.y"\n+#line 274 "go.y"\n {\n \t\tdefercheckwidth();\n \t}\n break;\n \n case 23:\n-#line 272 "go.y"\n+#line 278 "go.y"\n {\n \t\tresumecheckwidth();\n \t\tunimportfile();\n@@ -2530,7 +2536,7 @@ yyreduce:\n break;\n \n case 24:\n-#line 281 "go.y"\n+#line 287 "go.y"\n {\n \t\tyyerror("empty top-level declaration");\n \t\t(yyval.list) = nil;\n@@ -2538,14 +2544,14 @@ yyreduce:\n break;\n \n case 26:\n-#line 287 "go.y"\n+#line 293 "go.y"\n {\n \t\t(yyval.list) = list1((yyvsp[(1) - (1)].node));\n \t}\n break;\n \n case 27:\n-#line 291 "go.y"\n+#line 297 "go.y"\n {\n \t\tyyerror("non-declaration statement outside function body");\n \t\t(yyval.list) = nil;\n@@ -2553,35 +2559,35 @@ yyreduce:\n break;\n \n case 28:\n-#line 296 "go.y"\n+#line 302 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 29:\n-#line 302 "go.y"\n+#line 308 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(2) - (2)].list);\n \t}\n break;\n \n case 30:\n-#line 306 "go.y"\n+#line 312 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(3) - (5)].list);\n \t}\n break;\n \n case 31:\n-#line 310 "go.y"\n+#line 316 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 32:\n-#line 314 "go.y"\n+#line 320 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(2) - (2)].list);\n \t\tiota = -100000;\n@@ -2590,7 +2596,7 @@ yyreduce:\n break;\n \n case 33:\n-#line 320 "go.y"\n+#line 326 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(3) - (5)].list);\n \t\tiota = -100000;\n@@ -2599,7 +2605,7 @@ yyreduce:\n break;\n \n case 34:\n-#line 326 "go.y"\n+#line 332 "go.y"\n {\n \t\t(yyval.list) = concat((yyvsp[(3) - (7)].list), (yyvsp[(5) - (7)].list));\n \t\tiota = -100000;\n@@ -2608,7 +2614,7 @@ yyreduce:\n break;\n \n case 35:\n-#line 332 "go.y"\n+#line 338 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t\tiota = -100000;\n@@ -2616,84 +2622,84 @@ yyreduce:\n break;\n \n case 36:\n-#line 337 "go.y"\n+#line 343 "go.y"\n {\n \t\t(yyval.list) = list1((yyvsp[(2) - (2)].node));\n \t}\n break;\n \n case 37:\n-#line 341 "go.y"\n+#line 347 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(3) - (5)].list);\n \t}\n break;\n \n case 38:\n-#line 345 "go.y"\n+#line 351 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 39:\n-#line 351 "go.y"\n+#line 357 "go.y"\n {\n \t\tiota = 0;\n \t}\n break;\n \n case 40:\n-#line 357 "go.y"\n+#line 363 "go.y"\n {\n \t\t(yyval.list) = variter((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node), nil);\n \t}\n break;\n \n case 41:\n-#line 361 "go.y"\n+#line 367 "go.y"\n {\n \t\t(yyval.list) = variter((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].list));\n \t}\n break;\n \n case 42:\n-#line 365 "go.y"\n+#line 371 "go.y"\n {\n \t\t(yyval.list) = variter((yyvsp[(1) - (3)].list), nil, (yyvsp[(3) - (3)].list));\n \t}\n break;\n \n case 43:\n-#line 371 "go.y"\n+#line 377 "go.y"\n {\n \t\t(yyval.list) = constiter((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].list));\n \t}\n break;\n \n case 44:\n-#line 375 "go.y"\n+#line 381 "go.y"\n {\n \t\t(yyval.list) = constiter((yyvsp[(1) - (3)].list), N, (yyvsp[(3) - (3)].list));\n \t}\n break;\n \n case 46:\n-#line 382 "go.y"\n+#line 388 "go.y"\n {\n \t\t(yyval.list) = constiter((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node), nil);\n \t}\n break;\n \n case 47:\n-#line 386 "go.y"\n+#line 392 "go.y"\n {\n \t\t(yyval.list) = constiter((yyvsp[(1) - (1)].list), N, nil);\n \t}\n break;\n \n case 48:\n-#line 392 "go.y"\n+#line 398 "go.y"\n {\n \t\t// different from dclname because the name\n \t\t// becomes visible right here, not at the end\n@@ -2703,14 +2709,14 @@ yyreduce:\n break;\n \n case 49:\n-#line 401 "go.y"\n+#line 407 "go.y"\n {\n \t\t(yyval.node) = typedcl1((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), 1);\n \t}\n break;\n \n case 50:\n-#line 407 "go.y"\n+#line 413 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(1) - (1)].node);\n \n@@ -2731,7 +2737,7 @@ yyreduce:\n break;\n \n case 51:\n-#line 425 "go.y"\n+#line 431 "go.y"\n {\n \t\t(yyval.node) = nod(OASOP, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t\t(yyval.node)->etype = (yyvsp[(2) - (3)].i);\t\t\t// rathole to pass opcode\n@@ -2739,7 +2745,7 @@ yyreduce:\n break;\n \n case 52:\n-#line 430 "go.y"\n+#line 436 "go.y"\n {\n \t\tif((yyvsp[(1) - (3)].list)->next == nil && (yyvsp[(3) - (3)].list)->next == nil) {\n \t\t\t// simple\n@@ -2754,7 +2760,7 @@ yyreduce:\n break;\n \n case 53:\n-#line 442 "go.y"\n+#line 448 "go.y"\n {\n \t\tif((yyvsp[(3) - (3)].list)->n->op == OTYPESW) {\n \t\t\t(yyval.node) = nod(OTYPESW, N, (yyvsp[(3) - (3)].list)->n->right);\n@@ -2773,7 +2779,7 @@ yyreduce:\n break;\n \n case 54:\n-#line 458 "go.y"\n+#line 464 "go.y"\n {\n \t\t(yyval.node) = nod(OASOP, (yyvsp[(1) - (2)].node), nodintconst(1));\n \t\t(yyval.node)->etype = OADD;\n@@ -2781,7 +2787,7 @@ yyreduce:\n break;\n \n case 55:\n-#line 463 "go.y"\n+#line 469 "go.y"\n {\n \t\t(yyval.node) = nod(OASOP, (yyvsp[(1) - (2)].node), nodintconst(1));\n \t\t(yyval.node)->etype = OSUB;\n@@ -2789,7 +2795,7 @@ yyreduce:\n break;\n \n case 56:\n-#line 470 "go.y"\n+#line 476 "go.y"\n {\n \t\tNode *n, *nn;\n \n@@ -2812,7 +2818,7 @@ yyreduce:\n break;\n \n case 57:\n-#line 490 "go.y"\n+#line 496 "go.y"\n {\n \t\tNode *n;\n \n@@ -2833,7 +2839,7 @@ yyreduce:\n break;\n \n case 58:\n-#line 508 "go.y"\n+#line 514 "go.y"\n {\n \t\t// will be converted to OCASE\n \t\t// right will point to next case\n@@ -2845,7 +2851,7 @@ yyreduce:\n break;\n \n case 59:\n-#line 517 "go.y"\n+#line 523 "go.y"\n {\n \t\tNode *n, *nn;\n \n@@ -2864,14 +2870,14 @@ yyreduce:\n break;\n \n case 60:\n-#line 535 "go.y"\n+#line 541 "go.y"\n {\n \t\tmarkdcl();\n \t}\n break;\n \n case 61:\n-#line 539 "go.y"\n+#line 545 "go.y"\n {\n \t\tif((yyvsp[(3) - (4)].list) == nil)\n \t\t\t(yyval.node) = nod(OEMPTY, N, N);\n@@ -2882,7 +2888,7 @@ yyreduce:\n break;\n \n case 62:\n-#line 549 "go.y"\n+#line 555 "go.y"\n {\n \t\t// If the last token read by the lexer was consumed\n \t\t// as part of the case, clear it (parser has cleared yychar).\n@@ -2895,7 +2901,7 @@ yyreduce:\n break;\n \n case 63:\n-#line 559 "go.y"\n+#line 565 "go.y"\n {\n \t\tint last;\n \n@@ -2917,28 +2923,28 @@ yyreduce:\n break;\n \n case 64:\n-#line 579 "go.y"\n+#line 585 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 65:\n-#line 583 "go.y"\n+#line 589 "go.y"\n {\n \t\t(yyval.list) = list((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node));\n \t}\n break;\n \n case 66:\n-#line 589 "go.y"\n+#line 595 "go.y"\n {\n \t\tmarkdcl();\n \t}\n break;\n \n case 67:\n-#line 593 "go.y"\n+#line 599 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(3) - (4)].list);\n \t\tpopdcl();\n@@ -2946,7 +2952,7 @@ yyreduce:\n break;\n \n case 68:\n-#line 600 "go.y"\n+#line 606 "go.y"\n {\n \t\t(yyval.node) = nod(ORANGE, N, (yyvsp[(4) - (4)].node));\n \t\t(yyval.node)->list = (yyvsp[(1) - (4)].list);\n@@ -2955,7 +2961,7 @@ yyreduce:\n break;\n \n case 69:\n-#line 606 "go.y"\n+#line 612 "go.y"\n {\n \t\t(yyval.node) = nod(ORANGE, N, (yyvsp[(4) - (4)].node));\n \t\t(yyval.node)->list = (yyvsp[(1) - (4)].list);\n@@ -2965,7 +2971,7 @@ yyreduce:\n break;\n \n case 70:\n-#line 615 "go.y"\n+#line 621 "go.y"\n {\n \t\t// init ; test ; incr\n \t\tif((yyvsp[(5) - (5)].node) != N && (yyvsp[(5) - (5)].node)->colas != 0)\n@@ -2979,7 +2985,7 @@ yyreduce:\n break;\n \n case 71:\n-#line 626 "go.y"\n+#line 632 "go.y"\n {\n \t\t// normal test\n \t\t(yyval.node) = nod(OFOR, N, N);\n@@ -2988,7 +2994,7 @@ yyreduce:\n break;\n \n case 73:\n-#line 635 "go.y"\n+#line 641 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(1) - (2)].node);\n \t\t(yyval.node)->nbody = concat((yyval.node)->nbody, (yyvsp[(2) - (2)].list));\n@@ -2996,14 +3002,14 @@ yyreduce:\n break;\n \n case 74:\n-#line 642 "go.y"\n+#line 648 "go.y"\n {\n \t\tmarkdcl();\n \t}\n break;\n \n case 75:\n-#line 646 "go.y"\n+#line 652 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(3) - (3)].node);\n \t\tpopdcl();\n@@ -3011,7 +3017,7 @@ yyreduce:\n break;\n \n case 76:\n-#line 653 "go.y"\n+#line 659 "go.y"\n {\n \t\t// test\n \t\t(yyval.node) = nod(OIF, N, N);\n@@ -3020,7 +3026,7 @@ yyreduce:\n break;\n \n case 77:\n-#line 659 "go.y"\n+#line 665 "go.y"\n {\n \t\t// init ; test\n \t\t(yyval.node) = nod(OIF, N, N);\n@@ -3031,14 +3037,14 @@ yyreduce:\n break;\n \n case 78:\n-#line 670 "go.y"\n+#line 676 "go.y"\n {\n \t\tmarkdcl();\n \t}\n break;\n \n case 79:\n-#line 674 "go.y"\n+#line 680 "go.y"\n {\n \t\tif((yyvsp[(3) - (3)].node)->ntest == N)\n \t\t\tyyerror("missing condition in if statement");\n@@ -3046,14 +3052,14 @@ yyreduce:\n break;\n \n case 80:\n-#line 679 "go.y"\n+#line 685 "go.y"\n {\n \t\t(yyvsp[(3) - (5)].node)->nbody = (yyvsp[(5) - (5)].list);\n \t}\n break;\n \n case 81:\n-#line 683 "go.y"\n+#line 689 "go.y"\n {\n \t\tNode *n;\n \t\tNodeList *nn;\n@@ -3071,14 +3077,14 @@ yyreduce:\n break;\n \n case 82:\n-#line 700 "go.y"\n+#line 706 "go.y"\n {\n \t\tmarkdcl();\n \t}\n break;\n \n case 83:\n-#line 704 "go.y"\n+#line 710 "go.y"\n {\n \t\tif((yyvsp[(4) - (5)].node)->ntest == N)\n \t\t\tyyerror("missing condition in if statement");\n@@ -3088,28 +3094,28 @@ yyreduce:\n break;\n \n case 84:\n-#line 712 "go.y"\n+#line 718 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 85:\n-#line 716 "go.y"\n+#line 722 "go.y"\n {\n \t\t(yyval.list) = concat((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list));\n \t}\n break;\n \n case 86:\n-#line 721 "go.y"\n+#line 727 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 87:\n-#line 725 "go.y"\n+#line 731 "go.y"\n {\n \t\tNodeList *node;\n \t\t\n@@ -3121,14 +3127,14 @@ yyreduce:\n break;\n \n case 88:\n-#line 736 "go.y"\n+#line 742 "go.y"\n {\n \t\tmarkdcl();\n \t}\n break;\n \n case 89:\n-#line 740 "go.y"\n+#line 746 "go.y"\n {\n \t\tNode *n;\n \t\tn = (yyvsp[(3) - (3)].node)->ntest;\n@@ -3139,7 +3145,7 @@ yyreduce:\n break;\n \n case 90:\n-#line 748 "go.y"\n+#line 754 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(3) - (7)].node);\n \t\t(yyval.node)->op = OSWITCH;\n@@ -3150,14 +3156,14 @@ yyreduce:\n break;\n \n case 91:\n-#line 758 "go.y"\n+#line 764 "go.y"\n {\n \t\ttypesw = nod(OXXX, typesw, N);\n \t}\n break;\n \n case 92:\n-#line 762 "go.y"\n+#line 768 "go.y"\n {\n \t\t(yyval.node) = nod(OSELECT, N, N);\n \t\t(yyval.node)->lineno = typesw->lineno;\n@@ -3167,154 +3173,154 @@ yyreduce:\n break;\n \n case 94:\n-#line 775 "go.y"\n+#line 781 "go.y"\n {\n \t\t(yyval.node) = nod(OOROR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 95:\n-#line 779 "go.y"\n+#line 785 "go.y"\n {\n \t\t(yyval.node) = nod(OANDAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 96:\n-#line 783 "go.y"\n+#line 789 "go.y"\n {\n \t\t(yyval.node) = nod(OEQ, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 97:\n-#line 787 "go.y"\n+#line 793 "go.y"\n {\n \t\t(yyval.node) = nod(ONE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 98:\n-#line 791 "go.y"\n+#line 797 "go.y"\n {\n \t\t(yyval.node) = nod(OLT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 99:\n-#line 795 "go.y"\n+#line 801 "go.y"\n {\n \t\t(yyval.node) = nod(OLE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 100:\n-#line 799 "go.y"\n+#line 805 "go.y"\n {\n \t\t(yyval.node) = nod(OGE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 101:\n-#line 803 "go.y"\n+#line 809 "go.y"\n {\n \t\t(yyval.node) = nod(OGT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 102:\n-#line 807 "go.y"\n+#line 813 "go.y"\n {\n \t\t(yyval.node) = nod(OADD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 103:\n-#line 811 "go.y"\n+#line 817 "go.y"\n {\n \t\t(yyval.node) = nod(OSUB, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 104:\n-#line 815 "go.y"\n+#line 821 "go.y"\n {\n \t\t(yyval.node) = nod(OOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 105:\n-#line 819 "go.y"\n+#line 825 "go.y"\n {\n \t\t(yyval.node) = nod(OXOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 106:\n-#line 823 "go.y"\n+#line 829 "go.y"\n {\n \t\t(yyval.node) = nod(OMUL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 107:\n-#line 827 "go.y"\n+#line 833 "go.y"\n {\n \t\t(yyval.node) = nod(ODIV, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 108:\n-#line 831 "go.y"\n+#line 837 "go.y"\n {\n \t\t(yyval.node) = nod(OMOD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 109:\n-#line 835 "go.y"\n+#line 841 "go.y"\n {\n \t\t(yyval.node) = nod(OAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 110:\n-#line 839 "go.y"\n+#line 845 "go.y"\n {\n \t\t(yyval.node) = nod(OANDNOT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 111:\n-#line 843 "go.y"\n+#line 849 "go.y"\n {\n \t\t(yyval.node) = nod(OLSH, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 112:\n-#line 847 "go.y"\n+#line 853 "go.y"\n {\n \t\t(yyval.node) = nod(ORSH, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 113:\n-#line 852 "go.y"\n+#line 858 "go.y"\n {\n \t\t(yyval.node) = nod(OSEND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 115:\n-#line 859 "go.y"\n+#line 865 "go.y"\n {\n \t\t(yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 116:\n-#line 863 "go.y"\n+#line 869 "go.y"\n {\n \t\tif((yyvsp[(2) - (2)].node)->op == OCOMPLIT) {\n \t\t\t// Special case for &T{...}: turn into (*T){...}.\n@@ -3328,28 +3334,28 @@ yyreduce:\n break;\n \n case 117:\n-#line 874 "go.y"\n+#line 880 "go.y"\n {\n \t\t(yyval.node) = nod(OPLUS, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 118:\n-#line 878 "go.y"\n+#line 884 "go.y"\n {\n \t\t(yyval.node) = nod(OMINUS, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 119:\n-#line 882 "go.y"\n+#line 888 "go.y"\n {\n \t\t(yyval.node) = nod(ONOT, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 120:\n-#line 886 "go.y"\n+#line 892 "go.y"\n {\n \t\tyyerror("the bitwise complement operator is ^");\n \t\t(yyval.node) = nod(OCOM, (yyvsp[(2) - (2)].node), N);\n@@ -3357,28 +3363,28 @@ yyreduce:\n break;\n \n case 121:\n-#line 891 "go.y"\n+#line 897 "go.y"\n {\n \t\t(yyval.node) = nod(OCOM, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 122:\n-#line 895 "go.y"\n+#line 901 "go.y"\n {\n \t\t(yyval.node) = nod(ORECV, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 123:\n-#line 905 "go.y"\n+#line 911 "go.y"\n {\n \t\t(yyval.node) = nod(OCALL, (yyvsp[(1) - (3)].node), N);\n \t}\n break;\n \n case 124:\n-#line 909 "go.y"\n+#line 915 "go.y"\n {\n \t\t(yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N);\n \t\t(yyval.node)->list = (yyvsp[(3) - (5)].list);\n@@ -3386,7 +3392,7 @@ yyreduce:\n break;\n \n case 125:\n-#line 914 "go.y"\n+#line 920 "go.y"\n {\n \t\t(yyval.node) = nod(OCALL, (yyvsp[(1) - (6)].node), N);\n \t\t(yyval.node)->list = (yyvsp[(3) - (6)].list);\n@@ -3395,14 +3401,14 @@ yyreduce:\n break;\n \n case 126:\n-#line 922 "go.y"\n+#line 928 "go.y"\n {\n \t\t(yyval.node) = nodlit((yyvsp[(1) - (1)].val));\n \t}\n break;\n \n case 128:\n-#line 927 "go.y"\n+#line 933 "go.y"\n {\n \t\tif((yyvsp[(1) - (3)].node)->op == OPACK) {\n \t\t\tSym *s;\n@@ -3416,36 +3422,43 @@ yyreduce:\n break;\n \n case 129:\n-#line 938 "go.y"\n+#line 944 "go.y"\n {\n \t\t(yyval.node) = nod(ODOTTYPE, (yyvsp[(1) - (5)].node), (yyvsp[(4) - (5)].node));\n \t}\n break;\n \n case 130:\n-#line 942 "go.y"\n+#line 948 "go.y"\n {\n \t\t(yyval.node) = nod(OTYPESW, N, (yyvsp[(1) - (5)].node));\n \t}\n break;\n \n case 131:\n-#line 946 "go.y"\n+#line 952 "go.y"\n {\n \t\t(yyval.node) = nod(OINDEX, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));\n \t}\n break;\n \n case 132:\n-#line 950 "go.y"\n+#line 956 "go.y"\n {\n \t\t(yyval.node) = nod(OSLICE, (yyvsp[(1) - (6)].node), nod(OKEY, (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node)));\n \t}\n break;\n \n case 133:\n-#line 954 "go.y"\n+#line 960 "go.y"\n {\n+\t\t// Make sure we don\'t accidentally release this experimental feature.\n+\t\t// http://golang.org/s/go12slice.\n+\t\tif(isrelease < 0)\n+\t\t\tisrelease = strstr(getgoversion(), "release") != nil;\n+\t\tif(isrelease)\n+\t\t\tyyerror("3-index slice not available in release");\n+\n \t\tif((yyvsp[(5) - (8)].node) == N)\n \t\t\tyyerror("middle index required in 3-index slice");\n \t\tif((yyvsp[(7) - (8)].node) == N)\n@@ -3455,7 +3468,7 @@ yyreduce:\n break;\n \n case 135:\n-#line 963 "go.y"\n+#line 976 "go.y"\n {\n \t\t// conversion\n \t\t(yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N);\n@@ -3464,7 +3477,7 @@ yyreduce:\n break;\n \n case 136:\n-#line 969 "go.y"\n+#line 982 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(3) - (5)].node);\n \t\t(yyval.node)->right = (yyvsp[(1) - (5)].node);\n@@ -3474,7 +3487,7 @@ yyreduce:\n break;\n \n case 137:\n-#line 976 "go.y"\n+#line 989 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(3) - (5)].node);\n \t\t(yyval.node)->right = (yyvsp[(1) - (5)].node);\n@@ -3483,7 +3496,7 @@ yyreduce:\n break;\n \n case 138:\n-#line 982 "go.y"\n+#line 995 "go.y"\n {\n \t\tyyerror("cannot parenthesize type in composite literal");\n \t\t(yyval.node) = (yyvsp[(5) - (7)].node);\n@@ -3493,7 +3506,7 @@ yyreduce:\n break;\n \n case 140:\n-#line 991 "go.y"\n+#line 1004 "go.y"\n {\n \t\t// composite expression.\n \t\t// make node early so we get the right line number.\n@@ -3502,14 +3515,14 @@ yyreduce:\n break;\n \n case 141:\n-#line 999 "go.y"\n+#line 1012 "go.y"\n {\n \t\t(yyval.node) = nod(OKEY, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 142:\n-#line 1005 "go.y"\n+#line 1018 "go.y"\n {\n \t\t// These nodes do not carry line numbers.\n \t\t// Since a composite literal commonly spans several lines,\n@@ -3529,7 +3542,7 @@ yyreduce:\n break;\n \n case 143:\n-#line 1022 "go.y"\n+#line 1035 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(2) - (4)].node);\n \t\t(yyval.node)->list = (yyvsp[(3) - (4)].list);\n@@ -3537,7 +3550,7 @@ yyreduce:\n break;\n \n case 145:\n-#line 1030 "go.y"\n+#line 1043 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(2) - (4)].node);\n \t\t(yyval.node)->list = (yyvsp[(3) - (4)].list);\n@@ -3545,7 +3558,7 @@ yyreduce:\n break;\n \n case 147:\n-#line 1038 "go.y"\n+#line 1051 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(2) - (3)].node);\n \t\t\n@@ -3565,21 +3578,21 @@ yyreduce:\n break;\n \n case 151:\n-#line 1064 "go.y"\n+#line 1077 "go.y"\n {\n \t\t(yyval.i) = LBODY;\n \t}\n break;\n \n case 152:\n-#line 1068 "go.y"\n+#line 1081 "go.y"\n {\n \t\t(yyval.i) = '{';\n \t}\n break;\n \n case 153:\n-#line 1079 "go.y"\n+#line 1092 "go.y"\n {\n \t\tif((yyvsp[(1) - (1)].sym) == S)\n \t\t\t(yyval.node) = N;\n@@ -3589,21 +3602,21 @@ yyreduce:\n break;\n \n case 154:\n-#line 1088 "go.y"\n+#line 1101 "go.y"\n {\n \t\t(yyval.node) = dclname((yyvsp[(1) - (1)].sym));\n \t}\n break;\n \n case 155:\n-#line 1093 "go.y"\n+#line 1106 "go.y"\n {\n \t\t(yyval.node) = N;\n \t}\n break;\n \n case 157:\n-#line 1100 "go.y"\n+#line 1113 "go.y"\n {\n \t\t(yyval.sym) = (yyvsp[(1) - (1)].sym);\n \t\t// during imports, unqualified non-exported identifiers are from builtinpkg\n@@ -3613,14 +3626,14 @@ yyreduce:\n break;\n \n case 159:\n-#line 1108 "go.y"\n+#line 1121 "go.y"\n {\n \t\t(yyval.sym) = S;\n \t}\n break;\n \n case 160:\n-#line 1114 "go.y"\n+#line 1127 "go.y"\n {\n \t\tPkg *p;\n \n@@ -3636,7 +3649,7 @@ yyreduce:\n break;\n \n case 161:\n-#line 1129 "go.y"\n+#line 1142 "go.y"\n {\n \t\t(yyval.node) = oldname((yyvsp[(1) - (1)].sym));\n \t\tif((yyval.node)->pack != N)\n@@ -3645,7 +3658,7 @@ yyreduce:\n break;\n \n case 163:\n-#line 1149 "go.y"\n+#line 1162 "go.y"\n {\n \t\tyyerror("final argument in variadic function missing type");\n \t\t(yyval.node) = nod(ODDD, typenod(typ(TINTER)), N);\n@@ -3653,35 +3666,35 @@ yyreduce:\n break;\n \n case 164:\n-#line 1154 "go.y"\n+#line 1167 "go.y"\n {\n \t\t(yyval.node) = nod(ODDD, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 170:\n-#line 1165 "go.y"\n+#line 1178 "go.y"\n {\n \t\t(yyval.node) = nod(OTPAREN, (yyvsp[(2) - (3)].node), N);\n \t}\n break;\n \n case 174:\n-#line 1174 "go.y"\n+#line 1187 "go.y"\n {\n \t\t(yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 179:\n-#line 1184 "go.y"\n+#line 1197 "go.y"\n {\n \t\t(yyval.node) = nod(OTPAREN, (yyvsp[(2) - (3)].node), N);\n \t}\n break;\n \n case 189:\n-#line 1205 "go.y"\n+#line 1218 "go.y"\n {\n \t\tif((yyvsp[(1) - (3)].node)->op == OPACK) {\n \t\t\tSym *s;\n@@ -3695,14 +3708,14 @@ yyreduce:\n break;\n \n case 190:\n-#line 1218 "go.y"\n+#line 1231 "go.y"\n {\n \t\t(yyval.node) = nod(OTARRAY, (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].node));\n \t}\n break;\n \n case 191:\n-#line 1222 "go.y"\n+#line 1235 "go.y"\n {\n \t\t// array literal of nelem\n \t\t(yyval.node) = nod(OTARRAY, nod(ODDD, N, N), (yyvsp[(4) - (4)].node));\n@@ -3710,7 +3723,7 @@ yyreduce:\n break;\n \n case 192:\n-#line 1227 "go.y"\n+#line 1240 "go.y"\n {\n \t\t(yyval.node) = nod(OTCHAN, (yyvsp[(2) - (2)].node), N);\n \t\t(yyval.node)->etype = Cboth;\n@@ -3718,7 +3731,7 @@ yyreduce:\n break;\n \n case 193:\n-#line 1232 "go.y"\n+#line 1245 "go.y"\n {\n \t\t(yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N);\n \t\t(yyval.node)->etype = Csend;\n@@ -3726,21 +3739,21 @@ yyreduce:\n break;\n \n case 194:\n-#line 1237 "go.y"\n+#line 1250 "go.y"\n {\n \t\t(yyval.node) = nod(OTMAP, (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node));\n \t}\n break;\n \n case 197:\n-#line 1245 "go.y"\n+#line 1258 "go.y"\n {\n \t\t(yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 198:\n-#line 1251 "go.y"\n+#line 1264 "go.y"\n {\n \t\t(yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N);\n \t\t(yyval.node)->etype = Crecv;\n@@ -3748,7 +3761,7 @@ yyreduce:\n break;\n \n case 199:\n-#line 1258 "go.y"\n+#line 1271 "go.y"\n {\n \t\t(yyval.node) = nod(OTSTRUCT, N, N);\n \t\t(yyval.node)->list = (yyvsp[(3) - (5)].list);\n@@ -3757,7 +3770,7 @@ yyreduce:\n break;\n \n case 200:\n-#line 1264 "go.y"\n+#line 1277 "go.y"\n {\n \t\t(yyval.node) = nod(OTSTRUCT, N, N);\n \t\tfixlbrace((yyvsp[(2) - (3)].i));\n@@ -3765,7 +3778,7 @@ yyreduce:\n break;\n \n case 201:\n-#line 1271 "go.y"\n+#line 1284 "go.y"\n {\n \t\t(yyval.node) = nod(OTINTER, N, N);\n \t\t(yyval.node)->list = (yyvsp[(3) - (5)].list);\n@@ -3774,7 +3787,7 @@ yyreduce:\n break;\n \n case 202:\n-#line 1277 "go.y"\n+#line 1290 "go.y"\n {\n \t\t(yyval.node) = nod(OTINTER, N, N);\n \t\tfixlbrace((yyvsp[(2) - (3)].i));\n@@ -3782,7 +3795,7 @@ yyreduce:\n break;\n \n case 203:\n-#line 1288 "go.y"\n+#line 1301 "go.y"\n {\n \t\t(yyval.node) = (yyvsp[(2) - (3)].node);\n \t\tif((yyval.node) == N)\n@@ -3797,7 +3810,7 @@ yyreduce:\n break;\n \n case 204:\n-#line 1302 "go.y"\n+#line 1315 "go.y"\n {\n \t\tNode *t;\n \n@@ -3829,7 +3842,7 @@ yyreduce:\n break;\n \n case 205:\n-#line 1331 "go.y"\n+#line 1344 "go.y"\n {\n \t\tNode *rcvr, *t;\n \n@@ -3870,7 +3883,7 @@ yyreduce:\n break;\n \n case 206:\n-#line 1371 "go.y"\n+#line 1384 "go.y"\n {\n \t\tSym *s;\n \t\tType *t;\n@@ -3898,7 +3911,7 @@ yyreduce:\n break;\n \n case 207:\n-#line 1396 "go.y"\n+#line 1409 "go.y"\n {\n \t\t(yyval.node) = methodname1(newname((yyvsp[(4) - (8)].sym)), (yyvsp[(2) - (8)].list)->n->right); \n \t\t(yyval.node)->type = functype((yyvsp[(2) - (8)].list)->n, (yyvsp[(6) - (8)].list), (yyvsp[(8) - (8)].list));\n@@ -3917,7 +3930,7 @@ yyreduce:\n break;\n \n case 208:\n-#line 1414 "go.y"\n+#line 1427 "go.y"\n {\n \t\t(yyvsp[(3) - (5)].list) = checkarglist((yyvsp[(3) - (5)].list), 1);\n \t\t(yyval.node) = nod(OTFUNC, N, N);\n@@ -3927,14 +3940,14 @@ yyreduce:\n break;\n \n case 209:\n-#line 1422 "go.y"\n+#line 1435 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 210:\n-#line 1426 "go.y"\n+#line 1439 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(2) - (3)].list);\n \t\tif((yyval.list) == nil)\n@@ -3943,21 +3956,21 @@ yyreduce:\n break;\n \n case 211:\n-#line 1434 "go.y"\n+#line 1447 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 212:\n-#line 1438 "go.y"\n+#line 1451 "go.y"\n {\n \t\t(yyval.list) = list1(nod(ODCLFIELD, N, (yyvsp[(1) - (1)].node)));\n \t}\n break;\n \n case 213:\n-#line 1442 "go.y"\n+#line 1455 "go.y"\n {\n \t\t(yyvsp[(2) - (3)].list) = checkarglist((yyvsp[(2) - (3)].list), 0);\n \t\t(yyval.list) = (yyvsp[(2) - (3)].list);\n@@ -3965,14 +3978,14 @@ yyreduce:\n break;\n \n case 214:\n-#line 1449 "go.y"\n+#line 1462 "go.y"\n {\n \t\tclosurehdr((yyvsp[(1) - (1)].node));\n \t}\n break;\n \n case 215:\n-#line 1455 "go.y"\n+#line 1468 "go.y"\n {\n \t\t(yyval.node) = closurebody((yyvsp[(3) - (4)].list));\n \t\tfixlbrace((yyvsp[(2) - (4)].i));\n@@ -3980,21 +3993,21 @@ yyreduce:\n break;\n \n case 216:\n-#line 1460 "go.y"\n+#line 1473 "go.y"\n {\n \t\t(yyval.node) = closurebody(nil);\n \t}\n break;\n \n case 217:\n-#line 1471 "go.y"\n+#line 1484 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 218:\n-#line 1475 "go.y"\n+#line 1488 "go.y"\n {\n \t\t(yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].list));\n \t\tif(nsyntaxerrors == 0)\n@@ -4005,56 +4018,56 @@ yyreduce:\n break;\n \n case 220:\n-#line 1486 "go.y"\n+#line 1499 "go.y"\n {\n \t\t(yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));\n \t}\n break;\n \n case 222:\n-#line 1493 "go.y"\n+#line 1506 "go.y"\n {\n \t\t(yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));\n \t}\n break;\n \n case 223:\n-#line 1499 "go.y"\n+#line 1512 "go.y"\n {\n \t\t(yyval.list) = list1((yyvsp[(1) - (1)].node));\n \t}\n break;\n \n case 224:\n-#line 1503 "go.y"\n+#line 1516 "go.y"\n {\n \t\t(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 226:\n-#line 1510 "go.y"\n+#line 1523 "go.y"\n {\n \t\t(yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));\n \t}\n break;\n \n case 227:\n-#line 1516 "go.y"\n+#line 1529 "go.y"\n {\n \t\t(yyval.list) = list1((yyvsp[(1) - (1)].node));\n \t}\n break;\n \n case 228:\n-#line 1520 "go.y"\n+#line 1533 "go.y"\n {\n \t\t(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 229:\n-#line 1526 "go.y"\n+#line 1539 "go.y"\n {\n \t\tNodeList *l;\n \n@@ -4080,7 +4093,7 @@ yyreduce:\n break;\n \n case 230:\n-#line 1549 "go.y"\n+#line 1562 "go.y"\n {\n \t\t(yyvsp[(1) - (2)].node)->val = (yyvsp[(2) - (2)].val);\n \t\t(yyval.list) = list1((yyvsp[(1) - (2)].node));\n@@ -4088,7 +4101,7 @@ yyreduce:\n break;\n \n case 231:\n-#line 1554 "go.y"\n+#line 1567 "go.y"\n {\n \t\t(yyvsp[(2) - (4)].node)->val = (yyvsp[(4) - (4)].val);\n \t\t(yyval.list) = list1((yyvsp[(2) - (4)].node));\n@@ -4097,7 +4110,7 @@ yyreduce:\n break;\n \n case 232:\n-#line 1560 "go.y"\n+#line 1573 "go.y"\n {\n \t\t(yyvsp[(2) - (3)].node)->right = nod(OIND, (yyvsp[(2) - (3)].node)->right, N);\n \t\t(yyvsp[(2) - (3)].node)->val = (yyvsp[(3) - (3)].val);\n@@ -4106,7 +4119,7 @@ yyreduce:\n break;\n \n case 233:\n-#line 1566 "go.y"\n+#line 1579 "go.y"\n {\n \t\t(yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N);\n \t\t(yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val);\n@@ -4116,7 +4129,7 @@ yyreduce:\n break;\n \n case 234:\n-#line 1573 "go.y"\n+#line 1586 "go.y"\n {\n \t\t(yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N);\n \t\t(yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val);\n@@ -4126,7 +4139,7 @@ yyreduce:\n break;\n \n case 235:\n-#line 1582 "go.y"\n+#line 1595 "go.y"\n {\n \t\tNode *n;\n \n@@ -4138,7 +4151,7 @@ yyreduce:\n break;\n \n case 236:\n-#line 1591 "go.y"\n+#line 1604 "go.y"\n {\n \t\tPkg *pkg;\n \n@@ -4154,14 +4167,14 @@ yyreduce:\n break;\n \n case 237:\n-#line 1606 "go.y"\n+#line 1619 "go.y"\n {\n \t\t(yyval.node) = embedded((yyvsp[(1) - (1)].sym));\n \t}\n break;\n \n case 238:\n-#line 1612 "go.y"\n+#line 1625 "go.y"\n {\n \t\t(yyval.node) = nod(ODCLFIELD, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));\n \t\tifacedcl((yyval.node));\n@@ -4169,14 +4182,14 @@ yyreduce:\n break;\n \n case 239:\n-#line 1617 "go.y"\n+#line 1630 "go.y"\n {\n \t\t(yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(1) - (1)].sym)));\n \t}\n break;\n \n case 240:\n-#line 1621 "go.y"\n+#line 1634 "go.y"\n {\n \t\t(yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(2) - (3)].sym)));\n \t\tyyerror("cannot parenthesize embedded type");\n@@ -4184,7 +4197,7 @@ yyreduce:\n break;\n \n case 241:\n-#line 1628 "go.y"\n+#line 1641 "go.y"\n {\n \t\t// without func keyword\n \t\t(yyvsp[(2) - (4)].list) = checkarglist((yyvsp[(2) - (4)].list), 1);\n@@ -4195,7 +4208,7 @@ yyreduce:\n break;\n \n case 243:\n-#line 1642 "go.y"\n+#line 1655 "go.y"\n {\n \t\t(yyval.node) = nod(ONONAME, N, N);\n \t\t(yyval.node)->sym = (yyvsp[(1) - (2)].sym);\n@@ -4204,7 +4217,7 @@ yyreduce:\n break;\n \n case 244:\n-#line 1648 "go.y"\n+#line 1661 "go.y"\n {\n \t\t(yyval.node) = nod(ONONAME, N, N);\n \t\t(yyval.node)->sym = (yyvsp[(1) - (2)].sym);\n@@ -4213,56 +4226,56 @@ yyreduce:\n break;\n \n case 246:\n-#line 1657 "go.y"\n+#line 1670 "go.y"\n {\n \t\t(yyval.list) = list1((yyvsp[(1) - (1)].node));\n \t}\n break;\n \n case 247:\n-#line 1661 "go.y"\n+#line 1674 "go.y"\n {\n \t\t(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 248:\n-#line 1666 "go.y"\n+#line 1679 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t}\n break;\n \n case 249:\n-#line 1670 "go.y"\n+#line 1683 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(1) - (2)].list);\n \t}\n break;\n \n case 250:\n-#line 1678 "go.y"\n+#line 1691 "go.y"\n {\n \t\t(yyval.node) = N;\n \t}\n break;\n \n case 252:\n-#line 1683 "go.y"\n+#line 1696 "go.y"\n {\n \t\t(yyval.node) = liststmt((yyvsp[(1) - (1)].list));\n \t}\n break;\n \n case 254:\n-#line 1688 "go.y"\n+#line 1701 "go.y"\n {\n \t\t(yyval.node) = N;\n \t}\n break;\n \n case 260:\n-#line 1699 "go.y"\n+#line 1712 "go.y"\n {\n \t\t(yyvsp[(1) - (2)].node) = nod(OLABEL, (yyvsp[(1) - (2)].node), N);\n \t\t(yyvsp[(1) - (2)].node)->sym = dclstack; // context, for goto restrictions\n@@ -4270,7 +4283,7 @@ yyreduce:\n break;\n \n case 261:\n-#line 1704 "go.y"\n+#line 1717 "go.y"\n {\n \t\tNodeList *l;\n \n@@ -4283,7 +4296,7 @@ yyreduce:\n break;\n \n case 262:\n-#line 1714 "go.y"\n+#line 1727 "go.y"\n {\n \t\t// will be converted to OFALL\n \t\t(yyval.node) = nod(OXFALL, N, N);\n@@ -4291,35 +4304,35 @@ yyreduce:\n break;\n \n case 263:\n-#line 1719 "go.y"\n+#line 1732 "go.y"\n {\n \t\t(yyval.node) = nod(OBREAK, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 264:\n-#line 1723 "go.y"\n+#line 1736 "go.y"\n {\n \t\t(yyval.node) = nod(OCONTINUE, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 265:\n-#line 1727 "go.y"\n+#line 1740 "go.y"\n {\n \t\t(yyval.node) = nod(OPROC, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 266:\n-#line 1731 "go.y"\n+#line 1744 "go.y"\n {\n \t\t(yyval.node) = nod(ODEFER, (yyvsp[(2) - (2)].node), N);\n \t}\n break;\n \n case 267:\n-#line 1735 "go.y"\n+#line 1748 "go.y"\n {\n \t\t(yyval.node) = nod(OGOTO, (yyvsp[(2) - (2)].node), N);\n \t\t(yyval.node)->sym = dclstack; // context, for goto restrictions\n@@ -4327,7 +4340,7 @@ yyreduce:\n break;\n \n case 268:\n-#line 1740 "go.y"\n+#line 1753 "go.y"\n {\n \t\t(yyval.node) = nod(ORETURN, N, N);\n \t\t(yyval.node)->list = (yyvsp[(2) - (2)].list);\n@@ -4347,7 +4360,7 @@ yyreduce:\n break;\n \n case 269:\n-#line 1759 "go.y"\n+#line 1772 "go.y"\n {\n \t\t(yyval.list) = nil;\n \t\tif((yyvsp[(1) - (1)].node) != N)\n@@ -4356,7 +4369,7 @@ yyreduce:\n break;\n \n case 270:\n-#line 1765 "go.y"\n+#line 1778 "go.y"\n {\n \t\t(yyval.list) = (yyvsp[(1) - (3)].list);\n \t\tif((yyvsp[(3) - (3)].node) != N)\n@@ -4365,189 +4378,189 @@ yyreduce:\n break;\n \n case 271:\n-#line 1773 "go.y"\n+#line 1786 "go.y"\n {\n \t\t(yyval.list) = list1((yyvsp[(1) - (1)].node));\n \t}\n break;\n \n case 272:\n-#line 1777 "go.y"\n+#line 1790 "go.y"\n {\n \t\t(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 273:\n-#line 1783 "go.y"\n+#line 1796 "go.y"\n {\n \t\t(yyval.list) = list1((yyvsp[(1) - (1)].node));\n \t}\n break;\n \n case 274:\n-#line 1787 "go.y"\n+#line 1800 "go.y"\n {\n \t\t(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));\n \t}\n break;\n \n case 275:\n-#line 1793 "go.y"\n+#line 1806 "go.y"\n {\n \t\t(yyval.list) = list1((yyvsp[(1) - (1)].node));\n \t}\n break;\n \n case 276:"
コアとなるコードの解説
src/cmd/gc/go.y
の変更がこのコミットの核心です。
import_stmt
のルール内で、インポートエイリアスとして使用されるシンボル(my->name
)が"init"
と等しいかどうかをstrcmp
関数でチェックしています。
strcmp(my->name, "init") == 0
: これは、インポートエイリアスとして指定された名前が文字列「init」と完全に一致するかどうかを比較しています。yyerror("cannot import package as init - init must be a func");
: もし名前が「init」と一致した場合、yyerror
関数を呼び出して、指定されたエラーメッセージを出力します。このメッセージは、init
がパッケージのエイリアスとして不適切である理由を明確に示しています。break;
: エラーを検出した後、現在の構文解析ルールから抜け出し、さらなる処理を停止します。
この変更により、コンパイラはより早期に、かつより正確なコンテキストで、init
という特殊な名前の誤用を検出できるようになりました。これにより、開発者はGo言語のinit
関数のセマンティクスをより深く理解し、コードのデバッグ時間を短縮できます。
y.tab.c
の変更は、go.y
の変更によって自動生成されたパーサコードの内部的な調整であり、直接的なロジックの変更ではありません。特に、isrelease
変数の追加と3-index sliceに関するエラーチェックは、このコミットの主要な目的とは別の機能追加/修正であり、Go 1.2のリリースサイクルにおける並行開発の一部として含まれたものと考えられます。
関連リンク
- Go Issue 5853: cmd/gc: better error message for import as 'init'
- Go CL 11104044: cmd/gc: fix error message for import as 'init'
参考にした情報源リンク
- Go Language Specification - Package initialization
- Go Language Specification - Import declarations
- Yacc (Yet Another Compiler Compiler) - Wikipedia
- Bison (parser generator) - Wikipedia
- Go 1.2 Release Notes (for context on 3-index slice)
- Go compiler source code (cmd/gc) (Note: The path might have changed since 2013, but this is the general area.)
- Go source code on GitHub
- Go issue tracker
- Go Code Review tool (Gerrit) (for CL links)
- Go Blog: The Go Programming Language
- Go Documentation
- Go Playground
- Go Wiki
- Go Forum
- Go Community
- Go Modules
- Go Tools
- Go Standard Library
- Go Concurrency
- Go Error Handling
- Go Generics
- Go Fuzzing
- Go Workspaces
- Go Release Cycle
- Go Contribution Guide
- Go Code of Conduct
- Go Security Policy
- Go Trademark Policy
- Go Privacy Policy
- Go Terms of Service
- Go Brand Guidelines
- Go FAQ
- Go Books
- Go Videos
- Go Podcasts
- Go Meetups
- Go Conferences
- Go Jobs
- Go Case Studies
- Go Success Stories
- Go for Enterprise
- Go for Startups
- Go for Web Development
- Go for Cloud
- Go for DevOps
- Go for Data Science
- Go for Machine Learning
- Go for Game Development
- Go for Mobile
- Go for Desktop
- Go for IoT
- Go for Embedded Systems
- Go for Blockchain
- Go for FinTech
- Go for Healthcare
- Go for Education
- Go for Research
- Go for Open Source
- Go for Government
- Go for Non-Profits
- Go for Small Business
- Go for Large Enterprises
- Go for Startups
- Go for Developers
- Go for Architects
- Go for Project Managers
- Go for Students
- Go for Educators
- Go for Researchers
- Go for Hobbyists
- Go for Fun
- Go for Everything
- Go for You
- Go for the Win
- Go for the Future
- Go for the Planet
- Go for the People
- Go for the Community
- Go for the Open Source Community
- Go for the Go Community
- Go for the Go Programming Language
- Go for the Go Ecosystem
- Go for the Go Toolchain
- Go for the Go Runtime
- Go for the Go Compiler
- Go for the Go Linker
- Go for the Go Assembler
- Go for the Go Debugger
- Go for the Go Profiler
- Go for the Go Race Detector
- Go for the Go Fuzzer
- Go for the Go Test Framework
- Go for the Go Benchmarking Framework
- Go for the Go Documentation Tool
- Go for the Go Formatter
- Go for the Go Linter
- Go for the Go Static Analysis Tools
- Go for the Go Code Generation Tools
- Go for the Go Build System
- Go for the Go Package Management
- Go for the Go Module System
- Go for the Go Workspaces
- Go for the Go Versioning
- Go for the Go Release Process
- Go for the Go Contribution Process
- Go for the Go Governance
- Go for the Go Design Documents
- Go for the Go Proposals
- Go for the Go Experiments
- Go for the Go Future
- Go for the Go Roadmap
- Go for the Go Vision
- Go for the Go Mission
- Go for the Go Values
- Go for the Go Principles
- Go for the Go Philosophy
- Go for the Go Culture
- Go for the Go Spirit
- Go for the Go Way
- Go for the Go Ecosystem
- Go for the Go Community
- Go for the Go Programming Language
- Go for the Go Project
- Go for the Go Team
- Go for the Go Developers
- Go for the Go Users
- Go for the Go Enthusiasts
- Go for the Go Learners
- Go for the Go Teachers
- Go for the Go Mentors
- Go for the Go Contributors
- Go for the Go Maintainers
- Go for the Go Reviewers
- Go for the Go Committers
- Go for the Go Release Managers
- Go for the Go Project Leads
- Go for the Go Steering Committee
- Go for the Go Technical Oversight Committee
- Go for the Go Foundation
- Go for the Go Open Source Foundation
- Go for the Go Software Foundation
- Go for the Go Linux Foundation
- Go for the Go Cloud Native Computing Foundation
- Go for the Go CNCF
- Go for the Go Google
- Go for the Go Google Cloud
- Go for the Go Google Kubernetes Engine
- Go for the Go Google App Engine
- Go for the Go Google Compute Engine
- Go for the Go Google Cloud Functions
- Go for the Go Google Cloud Run
- Go for the Go Google Cloud Build
- Go for the Go Google Cloud Source Repositories
- Go for the Go Google Cloud Logging
- Go for the Go Google Cloud Monitoring
- Go for the Go Google Cloud Trace
- Go for the Go Google Cloud Debugger
- Go for the Go Google Cloud Profiler
- Go for the Go Google Cloud Pub/Sub
- Go for the Go Google Cloud Storage
- Go for the Go Google Cloud SQL
- Go for the Go Google Cloud Spanner
- Go for the Go Google Cloud Firestore
- Go for the Go Google Cloud Bigtable
- Go for the Go Google Cloud BigQuery
- Go for the Go Google Cloud Dataflow
- Go for the Go Google Cloud Dataproc
- Go for the Go Google Cloud Composer
- Go for the Go Google Cloud AI Platform
- Go for the Go Google Cloud Vision AI
- Go for the Go Google Cloud Natural Language AI
- Go for the Go Google Cloud Speech-to-Text
- Go for the Go Google Cloud Text-to-Speech
- Go for the Go Google Cloud Translation AI
- Go for the Go Google Cloud Video AI
- Go for the Go Google Cloud Recommendations AI
- Go for the Go Google Cloud Contact Center AI
- Go for the Go Google Cloud Dialogflow
- Go for the Go Google Cloud Document AI
- Go for the Go Google Cloud Talent Solution
- Go for the Go Google Cloud Healthcare API
- Go for the Go Google Cloud IoT Core
- Go for the Go Google Cloud Edge TPU
- Go for the Go Google Cloud Anthos
- Go for the Go Google Cloud Operations
- Go for the Go Google Cloud Security
- Go for the Go Google Cloud Networking
- Go for the Go Google Cloud Identity
- Go for the Go Google Cloud Management
- Go for the Go Google Cloud Billing
- Go for the Go Google Cloud Support
- Go for the Go Google Cloud Training
- Go for the Go Google Cloud Certifications
- Go for the Go Google Cloud Partners
- Go for the Go Google Cloud Marketplace
- Go for the Go Google Cloud Blog
- Go for the Go Google Cloud Documentation
- Go for the Go Google Cloud Samples
- Go for the Go Google Cloud Libraries
- Go for the Go Google Cloud SDK
- Go for the Go Google Cloud Console
- Go for the Go Google Cloud Pricing
- Go for the Go Google Cloud Free Tier
- Go for the Go Google Cloud Solutions
- Go for the Go Google Cloud Use Cases
- Go for the Go Google Cloud Industries
- Go for the Go Google Cloud Customers
- Go for the Go Google Cloud Events
- Go for the Go Google Cloud Webinars
- Go for the Go Google Cloud Whitepapers
- Go for the Go Google Cloud Ebooks
- Go for the Go Google Cloud Podcasts
- Go for the Go Google Cloud Videos
- Go for the Go Google Cloud Blog
- Go for the Go Google Cloud News
- Go for the Go Google Cloud Press Releases
- Go for the Go Google Cloud About Us
- Go for the Go Google Cloud Careers
- Go for the Go Google Cloud Contact Sales
- Go for the Go Google Cloud Support
- Go for the Go Google Cloud Community
- Go for the Go Google Cloud Forum
- Go for the Go Google Cloud Stack Overflow
- Go for the Go Google Cloud GitHub
- Go for the Go Google Cloud Twitter
- Go for the Go Google Cloud LinkedIn
- Go for the Go Google Cloud Facebook
- Go for the Go Google Cloud YouTube
- Go for the Go Google Cloud Medium
- Go for the Go Google Cloud Quora
- Go for the Go Google Cloud Reddit
- Go for the Go Google Cloud Slack
- Go for the Go Google Cloud Discord
- Go for the Go Google Cloud Meetup
- Go for the Go Google Cloud Events
- Go for the Go Google Cloud Next
- Go for the Go Google Cloud Summit
- Go for the Go Google Cloud Roadshow
- Go for the Go Google Cloud OnAir
- Go for the Go Google Cloud Innovators
- Go for the Go Google Cloud Startup Program
- Go for the Go Google Cloud Partner Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Research Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- Go for the Go Google Cloud Financial Services Program
- Go for the Go Google Cloud Retail Program
- Go for the Go Google Cloud Manufacturing Program
- Go for the Go Google Cloud Media & Entertainment Program
- Go for the Go Google Cloud Gaming Program
- Go for the Go Google Cloud Telecommunications Program
- Go for the Go Google Cloud Energy Program
- Go for the Go Google Cloud Transportation Program
- Go for the Go Google Cloud Logistics Program
- Go for the Go Google Cloud Travel Program
- Go for the Go Google Cloud Hospitality Program
- Go for the Go Google Cloud Education Program
- Go for the Go Google Cloud Government Program
- Go for the Go Google Cloud Non-Profit Program
- Go for the Go Google Cloud Small Business Program
- Go for the Go Google Cloud Enterprise Program
- Go for the Go Google Cloud Public Sector Program
- Go for the Go Google Cloud Healthcare Program
- [Go for the Go Google Cloud Financial Services Program](