small change css
parent
e223135501
commit
68c7390bd2
|
@ -31,7 +31,6 @@ main > div {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border: 1px solid;
|
border: 1px solid;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
color: black;
|
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
this site is written in Go without using frameworks, hosting is <a href="https://htk.ge" target="_blank">hostetski</a>, domain bought for the price of a can of beer
|
this site is written in Go, hosting is <a href="https://htk.ge" target="_blank">hostetski</a>, domain bought for the price of a can of beer
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<code>2024 - now</code>
|
<code>2024 - now</code>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Это тестовый пост
|
# Это тестовый пост
|
||||||
[Этот](/test/) пост был *написан* в файле **формата** .md.
|
[Этот](/test/) пост был *написан* в файле **формата** .md.
|
||||||
|
|
||||||
Тестирую систему загрузки постов на сайт, исходно находящихся в .md.
|
Тестирую систему загрузки постов на сайт, исходно находящихся в markdown.
|
||||||
|
|
||||||
Используемый фреймворк: [github.com/gomarkdown/markdown](https://github.com/gomarkdown/markdown)
|
Используемый фреймворк: [github.com/gomarkdown/markdown](https://github.com/gomarkdown/markdown)
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Как же все таки изменить байты строки в Go?
|
||||||
|
Просто захотелось чуть чуть поиграться с пакетом unsafe в Go.
|
||||||
|
|
||||||
|
Строки (тип string) в Go являются *immutable*, то есть изменять их нельзя. Ну вообще конечно можно, но не напрямую.
|
||||||
|
|
||||||
|
Строка в Go под капотом является структурой вида: **указатель на данные, длина данных.** И первое, что приходит в голову чтобы изменить строку - добраться до поля с указателем, прибавить к нему индекс байта который надо поменять, разыменовать полученный адрес и что то ему присвоить.
|
||||||
|
|
||||||
|
Но в реальности все не так просто и при попытке что то положить по вычисленному адресу программа упадет с *segmentation fault (SIGSEGV)*. Чтобы этого избежать, предварительно надо выдать права на запись в страничку памяти где находится целевая строка. Сделать это можно через системные вызовы.
|
||||||
|
|
||||||
|
Код с пояснениями можно скачать [тут](https://git.hikan.ru/serr/unsafe-change-string-go)
|
||||||
|
|
||||||
|
Тестил на **go version go1.22.2 linux/amd64**
|
Loading…
Reference in New Issue