Вот сценарий, который я придумал. Это обрабатывает столбцы Identity, значения по умолчанию и первичные ключи. Это не обрабатывает внешние ключи, индексы, триггеры или любой другой умный материал. Это работает над 2000 SQLServer, 2005 и 2008.
declare @schema varchar(100), @table varchar(100)
set @schema = 'dbo' -- set schema name here
set @table = 'MyTable' -- set table name here
declare @sql table(s varchar(1000), id int identity)
-- create statement
insert into @sql(s) values ('create table [' + @table + '] (')
-- column list
insert into @sql(s)
select
' ['+column_name+'] ' +
data_type + coalesce('('+cast(character_maximum_length as varchar)+')','') + ' ' +
case when exists (
select id from syscolumns
where object_name(id)=@table
and name=column_name
and columnproperty(id,name,'IsIdentity') = 1
) then
'IDENTITY(' +
cast(ident_seed(@table) as varchar) + ',' +
cast(ident_incr(@table) as varchar) + ')'
else ''
end + ' ' +
( case when IS_NULLABLE = 'No' then 'NOT ' else '' end ) + 'NULL ' +
coalesce('DEFAULT '+COLUMN_DEFAULT,'') + ','
from INFORMATION_SCHEMA.COLUMNS where table_name = @table AND table_schema = @schema
order by ordinal_position
-- primary key
declare @pkname varchar(100)
select @pkname = constraint_name from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where table_name = @table and constraint_type='PRIMARY KEY'
if ( @pkname is not null ) begin
insert into @sql(s) values(' PRIMARY KEY (')
insert into @sql(s)
select ' ['+COLUMN_NAME+'],' from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where constraint_name = @pkname
order by ordinal_position
-- remove trailing comma
update @sql set s=left(s,len(s)-1) where id=@@identity
insert into @sql(s) values (' )')
end
else begin
-- remove trailing comma
update @sql set s=left(s,len(s)-1) where id=@@identity
end
-- closing bracket
insert into @sql(s) values( ')' )
-- result!
select s from @sql order by id
в $ GOROOT / misc есть файлы подсветки синтаксиса для emacs, vim, xcode и kate. Подойдет любой из этих редакторов.
Кто-то в канале # go-nut irc имеет файл синтаксиса Go для gedit , поэтому я бы спросил, хотите ли вы этого.
Я лично использую то, что используют Роб Пайк и Расс Кокс: acme . И я знаю, что Кен Томпсон все еще использует sam .
Edit: Для тех, кто заинтересован, Я создал страницу для сбора файлов подсветки синтаксиса Go для различных текстовых редакторов . Если у вас есть что-то, чего там нет, дайте мне знать, и я с радостью добавлю его.
Кто-то выпустил комплект для TextMate, если вы используете Mac. (просто выполните поиск в обсуждениях Go Google Group).
После поиска альтернатив я нашел эту ветку . Г-н Перес создал файл синтаксиса для gtk sourceview, чтобы редакторы, такие как gedit, scribes и т. Д.
Some info no-one has mentioned yet: The Go distribution comes with a program called gofmt which provides a standardized format for the language. You can run golfed Go through it and get clean output. See this example.
I am always using Emacs so I initially started thinking there would be no Go mode for Emacs and asked this question. Then a minute after I'd asked I had the notion to do find . -name "*.el"
at the top of the Go source tree and was able to answer my own question. Some other people seem to have found the answer useful.
vim или emacs? Я еще не играл с Go, но это единственные редакторы, которые я использую при программировании для себя.
Notepad ++ , вероятно, мог бы работать с некоторой настройкой файла синтаксиса для C ++.
Чтобы увидеть различия, прочтите Go For C ++ Programmers
Лично я считаю, что возможность разделенного окна Кейт весьма полезна при программировании на го. (Ubuntu 10.4 LTS с добавленным файлом подсветки синтаксиса kate)
Hotei