Go-дегі көп жолақты жолдарды қалай жазасыз?

Go-ге питонның многикалық жолдарымен ұқсастығы бар ма?

"""line 1
line 2
line 3"""

Егер жоқ болса, бірнеше жолға бөлінетін жолдарды жазудың таңдаулы жолы қандай?

428

6 жауаптар

тілдің сипаттамасына сәйкес, ширатылған жолдың литералын қолдануға болады, онда жол жолмен бөлінеді Қос тырнақшалар орнына артқы жақтаулар.

`line 1
line 2
line 3`
705
қосылды
Сонымен қатар, соңғы сызықтық кеңістікті пайдалану кезінде осыған абай болу керек. Мысалы, line 1 дегеннен кейін бос орын қалдырсаңыз, бұл редакторда көрінбейді, бірақ жолда көрсетіледі.
қосылды автор Ory Band, көзі
@DanieleD Бұл аздап нәтиже бермейді, бірақ қандай диалект? Негізінен, негізінен MySQL? stackoverflow.com/a/10574031 Бір дәлелдің кеңейтілуі арқылы, бұл markdown немесе shell сценарийлерін салу үшін ауырсыну (егер сіз $ (abcd) орнына борты қолданғыңыз келмейді).
қосылды автор Ivan Vučica, көзі
Қатардағы ескерту ретінде: «Шұғыл цитата» деп аталады, қашып кету тізбегін бөліп шығармайды. Сондықтан әдеттегі өрнектерді жазуға әдеттегі жолдың таңбалары бар, себебі олар әдетте Double-escaped емес шағымданған Go компиляторын жасайтын стандартты емес қашу тізбектерін қамтиды. Ол үлгілерді таза және салыстырмалы түрде оқуға қабілетті етеді.
қосылды автор jimt, көзі
@DanieleD Sql үшін ауырсыну деген не? Мен оны кейбір SQL сұраулары үшін қолдану туралы ойланамын, себебі бастапқы кодымнан басқа контексттерге көшіру және қою мүмкіндігім бар. Ол қашып кету дәйектерін талдаған жоқ па?
қосылды автор Kyle Heuton, көзі
Өте пайдалы !, рахмет!
қосылды автор Felipe Valdes, көзі
бұл SQL үшін ауырсыну екенін ескеріңіз
қосылды автор Daniele D, көзі
Рахмет, мен оны қалай жіберіп алғанымды білмеймін
қосылды автор aeter, көзі
бұл хабарламаны тексеріңіз: steemit.com/programming/@ elsanto/hellip;
қосылды автор Sanx, көзі

Сіз жаза аласыз:

"line 1" +
"line 2" +
"line 3"

бұл келесідей:

"line 1line 2line3"

Кескіндерді пайдаланудан айырмашылығы, ол құтылу таңбаларын сақтайды. «+» «I» деген жолда «жетекші» болуы керек екенін ескеріңіз:

"line 1"
+"line 2"

қате туғызады.

73
қосылды
@ N0thing: егер тек жолдың литералы болса, компилятор оңтайландыратындықтан, орындау уақыты айырмашылықтары жоқ. Бірақ компиляция уақытында шағын (микросекундтар, тіпті наносекундтар) айырмашылықтары бар.
қосылды автор dolmen, көзі
Бұл құтылуға арналған таңбаларды сақтайтындықтан, жаңа жолдарды \ n -ге қосуға болады және динамикалық жолдармен және онымен жұмыс істеу әлдеқайда оңай болады. Егер мен дұрыс болсам, қабылданған жауап шын мәнінде кодты статикалық жолдар үшін жасайды.
қосылды автор khuderm, көзі
Бұл сондай-ақ өте тиімсіз бола ма? Оңтайлы болған кезде бөлінген 6 таңбалар 6 * 2 + 6 + 3 * 6 = 36 таңба (жолдар өзгермейтіндіктен, әр жолға екі жол қосқанда жаңа жолды екі қиыстырылған жолдар).
қосылды автор N0thing, көзі
Бұл шешім Python-ның многикалық жолдарға ұқсас емес. Жолдың литералын бірнеше жолға бөледі, бірақ жолдың өзі бірнеше жолды қамтымайды.
қосылды автор Ben Butler-Cole, көзі

Сызықтағы литералдардан :

  • шикі литералы мультилинді мәтінді қолдайды (бірақ сақталған таңбалар түсіндірілмейді)
  • ' \ n ' секілді қашалған таңбаларды түсіндіруге мүмкіндік береді.

Бірақ егер сіздің көп жолды жолыңызда кері сілтемені (`) қамту керек болса, интерпретирленген жолдың литералын қолдануға тура келеді:

`line one
  line two ` +
"`" + `line three
line four`

Сіз тікелей шрифт жолында (`` xx \ ) тікелей сілтеме жасай алмайсыз. Пайдалануыңыз керек (« артқы жақты жолға қалай кері сұқпаласуға болады? » бөлімінде түсіндірілген):

 + "`" + ...
25
қосылды

Бірнеше жолақты жолдар үшін шифрлердің литералдарын пайдаланыңыз:

func main(){
    multiline := `line 
by line
and line
after line`
}

Шикізат литералы

Шикізат литералы are character sequences between back quotes, as in foo. Within the quotes, any character may appear except back quote.

Маңызды бөлігі - бұл тек қана multi-line емес raw және мульти-желілі болу - бұл оның жалғыз мақсаты емес.

Шикі жолдың литералының мәні - тырнақшалар арасында түсініксіз (нақты UTF-8-кодталған) таңбалардан тұратын жол. атап айтқанда, қиғаш сызықтардың ерекше мәні жоқ ...

Сондықтан қашулар түсіндірілмейді және кенелер арасындағы жаңа жолдар нақты жаңа сызықтар болады .

func main(){
    multiline := `line 
by line \n
and line \n
after line`

   //\n will be just printed. 
   //But new lines are there too.
    fmt.Print(multiline)
}

Біріктіру

Possibly you have long line which you want to break and you don't need new lines in it. Than you could use string Біріктіру.

func main(){
    multiline := "line " +
            "by line " +
            "and line " +
            "after line"

    fmt.Print(multiline)//No new lines here
}

Өйткені «» түсіндірілген литеральды қашалар түсіндіріледі.

func main(){
    multiline := "line " +
            "by line \n" +
            "and line \n" +
            "after line"

    fmt.Print(multiline)//New lines as interpreted \n
}
16
қосылды

Мазмұнды `` айналасындағыларға ұқсас етіп қоюға болады

var hi = `I am here,
hello,
`
4
қосылды

You have to be very careful on formatting and line spacing in go, everything counts and here is a working sample, try it https://play.golang.org/p/c0zeXKYlmF

package main

import "fmt"

func main() {
    testLine := `This is a test line 1
This is a test line 2`
    fmt.Println(testLine)
}
3
қосылды